noway noway - 15 days ago 6
Linux Question

Find and rename a directory

I am trying to find and rename a directory on a linux system.

the folder name is something like :

thefoldername-23423-431321


thefoldername
is consistent but the numbers change every time.

I tried this:

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


The command actually works and rename that directory. But I got an error on terminal saying that there is no such file or directory.

How can I fix it?

Answer

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.