Es ist ein harmloser Fehler, den Sie mit -depth
beseitigen können Option.
find . -depth -type d -name 'thefoldername*' -exec mv {} newfoldername \;
Das normale Verhalten von Find besteht darin, Verzeichnisse zu verarbeiten und dann in sie zu rekursieren. Da Sie es umbenannt haben, beschwert sich find, wenn es versucht, zu rekursieren. Die -depth
Die Option weist find an, zuerst zu rekursieren und dann das Verzeichnis danach zu verarbeiten.
Es fehlt das -execdir Möglichkeit! Wie in den Manpages von find angegeben:
-execdir command {};
Wie -exec
, aber der angegebene Befehl wird aus dem Unterverzeichnis ausgeführt, das die übereinstimmende Datei enthält, was normalerweise nicht das Verzeichnis ist, in dem Sie find gestartet haben.
find . -depth -type d -name 'thefoldername*' -execdir mv {} newfoldername \;
Mit der vorherigen Antwort sind meine Ordnerinhalte verschwunden.
Das ist meine Lösung. Es funktioniert gut:
for i in
find -type d -name 'oldFolderName'
;dodirname=$(dirname "$i")mv $dirname/oldFolderName $dirname/newFolderNamedone