GNU/Linux >> Znalost Linux >  >> Linux

Rekurzivně přejmenovávat soubory (změnit příponu) v Linuxu

Přišel na to

find . -name "*.andnav" -exec rename -v 's/\.andnav$/\.tile/i' {} \;
./0/0.png.andnav renamed as ./0/0.png.tile
./0/1.png.andnav renamed as ./0/1.png.tile
./1/0.png.andnav renamed as ./1/0.png.tile
./1/1.png.andnav renamed as ./1/1.png.tile

samozřejmě odstraňte -v, když to skutečně děláte, jinak to ztratí čas zobrazováním všech souborů


Se zsh:

autoload zmv
zmv -n '(**/)(*).andnav' '$1$2.tile'

Odstraňte -n skutečně provést přejmenování.


Něco jako:

find . -name '*.andnav' -exec sh -c 'mv "$0" "${0%.andnav}.tile"' {} \;

Vysvětlení

Výše uvedené začne procházet strom adresářů počínaje aktuálním pracovním adresářem (. ). Pokaždé, když se název souboru shoduje se vzorem *.andnav (např. foo.andnav ) provede se následující příkaz:

sh -c 'mv "$0" "${0%.andnav}.tile"' foo.andnav

Kde $0 je foo.andnav a ${0%.andnav}.tile nahrazuje .andnav přípona .tile takže v podstatě:

mv foo.andnav foo.tile

Linux
  1. Jak přejmenovat soubory v Linuxu

  2. Příkaz přejmenovat Linux

  3. Jak změnit nebo přejmenovat přípojný bod v Linuxu

  1. Rekurzivní počítání souborů v adresáři Linuxu

  2. Jak přejmenovat více souborů z jedné přípony na druhou v Linuxu / Unixu?

  3. Linux přejmenovává soubory na velká písmena

  1. Jak přejmenovat soubory v Linuxu

  2. Jak zobrazit nebo změnit ACL v souborech Linux

  3. Rekurzivní kopírování skrytých souborů - Linux