GNU/Linux >> Znalost Linux >  >> Linux

Najděte a přejmenujte adresář

Je to neškodná chyba, které se můžete zbavit pomocí -depth možnost.

find . -depth -type d -name 'thefoldername*' -exec mv {} newfoldername \;

Normálním chováním Findu je zpracovat adresáře a poté se do nich vrátit. Vzhledem k tomu, že jste jej přejmenovali, najděte stížnosti, když se pokusí rekurzovat. -depth volba říká find, aby nejprve rekurzoval a poté zpracoval adresář.


Chybí v něm -execdir volba! Jak je uvedeno v manuálových stránkách find:

-execdir command {};

Jako -exec , ale zadaný příkaz je spuštěn z podadresáře obsahujícího odpovídající soubor, což obvykle není adresář, ve kterém jste začali hledat.

find . -depth -type d -name 'thefoldername*' -execdir mv {} newfoldername \;


S předchozí odpovědí obsah mých složek zmizel.
Toto je moje řešení. Funguje to dobře: for i in find -type d -name 'oldFolderName';dodirname=$(dirname "$i")mv $dirname/oldFolderName $dirname/newFolderNamedone


Linux
  1. 6 Příklady příkazů mv pro přesun nebo přejmenování souborů a adresářů systému Linux

  2. Najít a nahradit sed v adresáři a podadresářích

  3. Najděte více souborů a přejmenujte je v Linuxu

  1. Přejmenujte všechny soubory a názvy adresářů na malá písmena v Linuxu

  2. Jak přejmenovat adresář v Linuxu

  3. Ssh a oprávnění k domovskému adresáři?

  1. Najít vzor a přesunout?

  2. Přejmenovat soubory v adresáři?

  3. Linux Najít a odebrat všechny symbolické odkazy týkající se adresáře?