GNU/Linux >> Znalost Linux >  >> Linux

Dávkové přejmenování souborů v příkazovém řádku a Xargs

To lze také provést pomocí xargs a sed pro změnu přípony souboru.

ls | grep \.png$ | sed 'p;s/\.png/\.jpg/' | xargs -n2 mv

Můžete vytisknout původní název souboru spolu s tím, co chcete, aby byl název souboru. Pak nechte xargs použít tyto dva argumenty v příkazu move. Pro jeden řádek jsem také přidal grep pro odfiltrování všeho, co není soubor *.png.


jak přejmenuji soubor, abych mohl mít pouze jednu příponu.

cd dir/with/messedup/files

for file in *.png.jpg; do
  mv "$file" "${file%.png.jpg}.jpg"
done

Jak v budoucnu pomocí xargs změním příponu souboru simular na druhý příkaz?

Podle mých informací to nelze. Nejlepší způsob, jak to udělat, by bylo použít for-loop se substitucí parametrů podobně jako výše:

for file in *.png; do
  convert "$file" -resize "${file%.png}.jpg"
done

Máte-li v podadresářích soubory, které chcete převést, můžete použít kanál find na while read smyčka:

find . -type f -name '*.png' |
while read file; do
  convert "$file" -resize "${file%.png}.jpg"
done

POZNÁMKA: Obecně se považuje za špatný nápad používat výstup ls ve skriptu shellu. I když váš příklad mohl fungovat dobře, existuje mnoho příkladů, kdy ne. Pokud například vaše názvy souborů náhodou obsahují nové řádky (což unix umožňuje), ls těm vám asi neuniknou. (To ve skutečnosti závisí na vaší implementaci, což je další důvod, proč nepoužívat ls ve skriptech; jeho chování se velmi liší od jednoho pole k druhému.) Shodnějších výsledků získáte, pokud použijete find ve smyčce při čtení nebo v globování souborů (např. *.png ) ve smyčce for.


Linux
  1. Zkopírujte a vložte na příkazový řádek Linuxu pomocí xclip

  2. Jak změnit oprávnění a vlastníky pomocí příkazového řádku

  3. Jak rozdělit a kombinovat soubory z příkazového řádku v Linuxu

  1. Jak skrýt soubory a složky ve Správci souborů bez přejmenování

  2. Vytvářejte soubory pomocí příkazového řádku v Linuxu

  3. 11 Příklady příkazů Linux diff3 (Porovnejte 3 soubory řádek po řádku)

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Jak odstranit soubory a adresáře v Linuxu z příkazového řádku

  3. Metamorphose 2 – Dávkové přejmenování souborů a složek v systému Linux