C'est une erreur inoffensive dont vous pouvez vous débarrasser avec le -depth
option.
find . -depth -type d -name 'thefoldername*' -exec mv {} newfoldername \;
Le comportement normal de Find consiste à traiter les répertoires, puis à y revenir. Puisque vous l'avez renommé, trouvez des plaintes lorsqu'il essaie de se reproduire. Le -depth
L'option indique à find de faire d'abord une récurrence, puis de traiter le répertoire après.
Il manque le -execdir option! Comme indiqué dans les pages de manuel de find :
-execdir command {};
Comme -exec
, mais la commande spécifiée est exécutée à partir du sous-répertoire contenant le fichier correspondant, qui n'est normalement pas le répertoire dans lequel vous avez commencé la recherche.
find . -depth -type d -name 'thefoldername*' -execdir mv {} newfoldername \;
Avec la réponse précédente, le contenu de mes dossiers a disparu.
C'est ma solution. Cela fonctionne bien :
for i in
find -type d -name 'oldFolderName'
;dodirname=$(dirname "$i")mv $dirname/oldFolderName $dirname/newFolderNamedone