GNU/Linux >> Znalost Linux >  >> Linux

Jak vyčistit přípony souborů?

Mám adresáře se soubory .MP3, u kterých bych chtěl změnit příponu na .mp3. Jaký je nejjednodušší způsob, jak to udělat? Myslím si něco ve smyslu:

find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/1.mp3/ ; 

…i když vím, že to není úplně správné. 🙂 Náhrada není správná a nejsem si jistý, jak použít oba mv a sed příkaz s -exec v find .

Potřeboval bych k tomu bash skript?

Přijatá odpověď:

Zde je jeden způsob, jak to udělat v Bash:

for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done

Použil jsem echo zde tedy samotný příkaz nedělá nic jiného než tiskne dvojice názvů souborů. Pokud tento seznam představuje změny, které chcete provést, můžete změnit echo na něco jako mv -i -- který pak přesune vaše soubory (a vyzve vás před přepsáním).

Stručné vysvětlení:

for iteruje každý soubor odpovídající * . Poté určíme, zda je přípona již malá, pokud ano, posouváme dál, pokud ne, pokračujeme v jejím přesunutí (nebo v echo, podle okolností). Používá Bash vestavěné operace s řetězci, o kterých si můžete přečíst zde:http://tldp.org/LDP/abs/html/string-manipulation.html


Linux
  1. Jak připojím text k souboru?

  2. Jak třídit soubor na místě

  3. Jak rekurzivně zobrazit obsah souboru?

  1. Jak přejmenovat soubor v Linuxu?

  2. Jak udělat soubor řídký?

  3. Jak grep \nv souboru

  1. Jak přesunout soubor v Linuxu

  2. Jak extrahovat (rozbalit) soubor Tar Gz

  3. Jak transakčně zkopírovat soubor?