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