Cómo cambiar el nombre de un archivo usando el comando buscar

Cómo cambiar el nombre de un archivo usando el comando buscar

Estoy intentando cambiar el nombre de un archivo usando findel comando.

Estoy intentando cambiar el nombre del archivo-a al archivo-10.

Para hacer esto, primero probé el siguiente comando:

sps@sps-Inspiron-N5110:~$ find ~ -type f -name test-a -exec mv test-10 '{}' ';'
mv: cannot stat `test-10': No such file or directory
sps@sps-Inspiron-N5110:~$

Luego probé a continuación:

sps@sps-Inspiron-N5110:~$ find ~ -type f -name test-a -exec mv test-a test-10 '{}' ';'
mv: target `/home/sps/test-a' is not a directory
sps@sps-Inspiron-N5110:~$

Ahora no puedo pensar cómo hacer eso con find. Estoy intentando hacer esto con find, porque tendré muchos directorios con el mismo nombre de archivo y quiero cambiarlos todos test-aen test-10un solo comando. Alguien por favor sugiera.

Gracias.

Respuesta1

La sintaxis de mves mv <source> <target>, por lo que el comando final que findse ejecuta debería verse así:

mv test-a test-10 

Entonces, la primera suposición sería intentar:

find ~ -type f -name test-a -exec mv {} test-10 \;

Sin embargo, esto fallará, ya que {}se expande a la ruta completa y mvaún se ejecuta en el directorio actual, lo que hace que todos los archivos se muevan a su directorio actual y se sobrescriban. Para evitar esto, puedes usar -execdirso that mvse ejecuta en el directorio donde se encontró el archivo:

find ~ -type f -name test-a -execdir mv {} test-10 \;

O, dado que el nombre del archivo es siempre el mismo:

find ~ -type f -name test-a -execdir mv test-a test-10 \;

información relacionada