È un errore innocuo che puoi eliminare con -depth
opzione.
find . -depth -type d -name 'thefoldername*' -exec mv {} newfoldername \;
Il comportamento normale di Find è elaborare le directory e quindi ricorrere a esse. Dal momento che l'hai rinominato, trova i reclami quando tenta di ricorrere. Il -depth
l'opzione dice a find di eseguire prima la ricorsione, quindi di elaborare la directory dopo.
Manca -execdir opzione! Come indicato nelle pagine man di find:
-execdir command {};
Come -exec
, ma il comando specificato viene eseguito dalla sottodirectory contenente il file corrispondente, che normalmente non è la directory in cui hai iniziato a trovare.
find . -depth -type d -name 'thefoldername*' -execdir mv {} newfoldername \;
Con la risposta precedente il contenuto delle mie cartelle è scomparso.
Questa è la mia soluzione. Funziona bene:
for i in
find -type d -name 'oldFolderName'
;dodirname=$(dirname "$i")mv $dirname/oldFolderName $dirname/newFolderNamedone