Introducción
Cambiar el nombre de varios archivos y directorios con el mv
puede ser un proceso tedioso, ya que implica escribir comandos complejos con tuberías, bucles, etc.
Aquí es donde el rename
resulta útil. Cambie el nombre de los archivos reemplazando la expresión de búsqueda en su nombre con el reemplazo especificado.
En este tutorial, explicaremos cómo usar el rename
para renombrar archivos por lotes.
Instalar Renombrar
Hay dos versiones del rename
de nombre con diferente sintaxis y funcionalidad. Usaremos la versión Perl del comando de rename
Si esta versión no está instalada en su sistema, use el administrador de paquetes de su distribución de Linux para instalarla:
Ubuntu y Debian
sudo apt update
sudo apt install rename
CentOS y Fedora
sudo yum install prename
Arch Linux
yay perl-rename
Usar Renombrar
A continuación se muestra la sintaxis general del comando de rename
rename [OPTIONS] perlexpr files
El rename
es básicamente un script de Perl. Cambiará el nombre del archivo dado según la perlexpr
Por ejemplo, el siguiente comando cambiará la extensión de todos los .css
archivos a .scss
:
rename 's/.css/.scss/' *.css
Expliquemos el comando con más detalle:
s/search_pattern/replacement/
- El operador de sustitución..css
: el modelo de búsqueda. Es el primer argumento del operador de sustitución. Elrename
buscará este patrón en el nombre de archivo especificado y, si lo encuentra, lo reemplazará con el argumento de reemplazo..scss
: el reemplazo. El segundo argumento en el operador de sustitución.*.css
: todos los archivos con la extensión ".css". El comodín*
es un símbolo que se utiliza para representar cero, uno o más caracteres.
Antes de ejecutar el comando real y cambiar el nombre de los archivos y directorios, siempre es una buena idea usar la -n
que hará una "prueba de ejecución" y mostrará qué archivos se renombrarán:
rename -n 's/.css/.scss/' *.css
La salida se verá así:
rename(file-0.css, file-0.scss)
rename(file-1.css, file-1.scss)
rename(file-2.css, file-2.scss)
rename(file-3.css, file-3.scss)
rename(file-4.css, file-4.scss)
De forma predeterminada, el rename
no sobrescribe los archivos existentes. Utilice la -f
que permite que la rename
sobrescriba los archivos existentes:
rename -f 's/.css/.scss/' *.css
Si desea rename
archivos que se han renombrado correctamente, use la -v
(detallado - detallado):
rename -v 's/.css/.scss/' *.css
file-0.css renamed as file-0.scss
file-1.css renamed as file-1.scss
file-2.css renamed as file-2.scss
file-3.css renamed as file-3.scss
file-4.css renamed as file-4.scss
Ejemplos de
A continuación, se muestran algunos ejemplos comunes de cómo usar el comando de cambio de nombre:
Reemplace los espacios en los nombres de archivo con guiones bajos:
rename 'y//_/' *
Convertir nombres de archivos a minúsculas
rename 'y/AZ/az/' *
Convertir nombres de archivo a mayúsculas
rename 'y/az/AZ/' *
Eliminar.bk de los nombres de archivo
rename 's/\.bk$//' *.bk
Cambie el nombre de los archivos.jpeg y.JPG a.jpg
rename 's/\.jpe?g$/.jpg/i' *
Conclusión
El rename
permite cambiar el nombre de varios archivos a la vez, utilizando expresiones regulares de Perl.