GNU/Linux >> Tutoriales Linux >  >> Linux

Cambiar el nombre de muchos archivos en Linux según un patrón

No los he probado, así que puse echo al frente de los comandos para que pueda probarlos antes de eliminar el eco para ejecutarlos de verdad.

  1. for f in *v9.zip; do echo mv "${f}" "${f%v9.zip}.zip"; done
    
  2. for f in *_*; do echo mv "${f}" "${f//_/-}"; done
    

En cuanto a su tercer problema, estoy seguro de que también se puede hacer, pero tal vez ayude un enfoque más sofisticado que las frases simples sin procesar, como mencionó @tchrist.


Hay un rename Comando proporcionado con la mayoría de las distribuciones basadas en Debian/Ubuntu que fue escrito por Robin Barker basado en el código original de Larry Wall de alrededor de 1998 (!).

Aquí hay un extracto de la documentación:

  "rename" renames the filenames supplied according to the rule specified as the first argument.  The perlexpr argument is a Perl expression which is expected to modify the $_ string in Perl for at least some of the filenames
  specified.  If a given filename is not modified by the expression, it will not be renamed.  If no filenames are given on the command line, filenames will be read via standard input.

  For example, to rename all files matching "*.bak" to strip the extension, you might say

          rename 's/\.bak$//' *.bak

  To translate uppercase names to lower, you'd use

          rename 'y/A-Z/a-z/' *

Utiliza perl para que pueda usar expresiones de perl para que coincida con el patrón, de hecho, creo que funciona de manera muy similar a los scripts de tchrist.

Otro conjunto de herramientas realmente útil para cambiar el nombre de archivos en masa es la colección renameutils de Oskar Liljeblad. El código fuente está alojado por la Free Software Foundation. Además, muchas distribuciones (especialmente las basadas en Debian/Ubuntu) tienen un renameutils paquete con estas herramientas.

En una de esas distribuciones puedes instalarlo con:

$ sudo apt-get install renameutils

Y luego, para cambiar el nombre de los archivos, simplemente ejecute este comando:

$ qmv

Se abrirá un editor de texto con la lista de archivos y podrá manipularlos con la función de búsqueda y reemplazo de su editor.


Mi solución favorita es mi propio renombrar guion. El ejemplo más simple que se relaciona con sus problemas son estos:

% rename 's/_/-/g' *
% rename 's/(\p{Lower})(\p{Upper})/$1 $2/g' *

Aunque realmente odio los espacios en blanco en mis nombres de archivo, especialmente los espacios en blanco verticales:

 % rename 's/\s//g' *
 % rename 's/\v//g' *

etcétera. Está basado en un guión de The Larry Wall, pero ampliado con opciones, como en:

usage: /home/tchrist/scripts/rename [-ifqI0vnml] [-F file] perlexpr [files]
    -i          ask about clobbering existent files
    -f          force clobbers without inquiring
    -q          quietly skip clobbers without inquiring
    -I          ask about all changes
    -0          read null-terminated filenames
    -v          verbosely says what its doing 
    -V          verbosely says what its doing but with newlines between old and new filenames
    -n          don't really do it
    -m          to always rename
    -l          to always symlink
    -F path     read filelist to change from magic path(s)

Como puede ver, puede cambiar no solo los nombres de los archivos, sino también a dónde apuntan los enlaces simbólicos usando el mismo patrón. No tienes que usar un s/// patrón, aunque a menudo uno lo hace.

Las otras herramientas en ese directorio son principalmente para trabajo Unicode, de las cuales hay algunas muy útiles.


Linux
  1. Metamorphose 2:cambie el nombre por lotes de sus archivos y carpetas en Linux

  2. Eliminar parte de un nombre de archivo para varios archivos en Linux

  3. Encuentre múltiples archivos y cámbieles el nombre en Linux

  4. Linux cambia el nombre de los archivos a mayúsculas

  5. Cambiar el nombre recursivamente de los archivos (cambiar la extensión) en Linux

Comando Renombrar en Linux (Renombrar Múltiples Archivos)

Comando Rm en 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

8 métodos para cambiar el nombre de varios archivos a la vez en Linux

Extensión de cambio de nombre de varios archivos de Linux