GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo cambiar el nombre de varios archivos usando Buscar?

Quiero cambiar el nombre de varios archivos (archivo1... archivoN a archivo1_renombrado... archivoN_renombrado) usando find comando:

find . -type f -name 'file*' -exec mv filename='{}' $(basename $filename)_renamed ';'

Pero obteniendo este error:

mv: cannot stat ‘filename=./file1’: No such file or directory

Esto no funciona porque el nombre de archivo no se interpreta como una variable de shell.

Respuesta aceptada:

La siguiente es una solución directa de su enfoque:

find . -type f -name 'file*' -exec sh -c 'x="{}"; mv "$x" "${x}_renamed"' \;

Sin embargo, esto es muy costoso si tiene muchos archivos coincidentes, porque inicia un shell nuevo (que ejecuta un mv ) para cada partido. Y si tiene personajes divertidos en cualquier nombre de archivo, esto explotará. Un enfoque más eficiente y seguro es este:

find . -type f -name 'file*' -print0 | xargs --null -I{} mv {} {}_renamed

También tiene la ventaja de trabajar con archivos con nombres extraños. Si find lo admite, esto se puede reducir a

find . -type f -name 'file*' -exec mv {} {}_renamed \;

Los xargs La versión es útil cuando no se usa {} , como en

find .... -print0 | xargs --null rm

Aquí rm se llama una vez (o con muchos archivos varias veces), pero no para todos los archivos.

Eliminé el basename en su pregunta, porque probablemente esté mal:movería foo/bar/file8 a file8_renamed , no foo/bar/file8_renamed .

Ediciones (como se sugiere en los comentarios):

  • Se agregó find abreviado sin xargs
  • Pegatina de seguridad agregada

Linux
  1. ¿Cómo cambiar el nombre de varios archivos en un solo comando o secuencia de comandos en Unix?

  2. ¿Cómo cambiar el nombre de muchos archivos usando una expresión regular?

  3. Cómo cambiar el nombre de varios archivos a la vez en Linux

  4. Cómo copiar varios archivos simultáneamente usando scp

  5. ¿Cómo puedo enumerar solo archivos no vacíos usando ls?

Cómo encontrar archivos en Linux

Cómo encontrar archivos usando la línea de comandos en la terminal de Linux

Cómo cambiar el nombre de los archivos usando la línea de comandos en Linux

Cómo cambiar el nombre de un archivo (s) en Linux

Cómo editar varios archivos usando Vim Editor

Cómo encontrar archivos en Debian