Find and rename a directory

It's a harmless error which you can get rid of with the -depth option.

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

Find's normal behavior is to process directories and then recurse into them. Since you've renamed it find complains when it tries to recurse. The -depth option tells find to recurse first, then process the directory after.


It's missing the -execdir option! As stated in man pages of find:

-execdir command {};

Like -exec, but the specified command is run from the subdirectory containing the matched file, which is not normally the directory in which you started find.

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


With the previous answer my folders contents are disappeared.
This is my solution. It works well: for i in find -type d -name 'oldFolderName'; do dirname=$(dirname "$i") mv $dirname/oldFolderName $dirname/newFolderName done