Renombrar: una herramienta de línea de comandos para cambiar el nombre de varios archivos en Linux


A menudo usamos el comando "mv" para cambiar el nombre de un solo archivo en Linux. Sin embargo, cambiar el nombre de varios o grupos de archivos rápidamente hace que sea una tarea muy difícil en una terminal.

Linux viene con una herramienta incorporada muy poderosa llamada renombrar. El comando de cambio de nombre se utiliza para cambiar el nombre de varios o grupos de archivos, cambiar el nombre de los archivos a minúsculas, cambiar el nombre de los archivos a mayúsculas y sobrescribir archivos usando expresiones de Perl.

El comando "renombrar" es parte del script de Perl y reside en "/ usr/bin /" en muchas distribuciones de Linux. Puede ejecutar el comando "which" para averiguar la ubicación del comando de cambio de nombre.

$ which rename
/usr/bin/rename
rename 's/old-name/new-name/' files

El comando de cambio de nombre viene con algunos argumentos opcionales junto con una expresión de perl obligatoria que guía el comando de cambio de nombre para hacer el trabajo real.

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

  1. -v: imprime los nombres de los archivos cuyo nombre se ha cambiado correctamente.
  2. -n: muestra qué archivos se habrían cambiado de nombre.
  3. -f: Forzar la sobrescritura de archivos existentes.
  4. perlexpr: Expresión de Perl.

Para comprender mejor esta utilidad, hemos discutido algunos ejemplos prácticos de este comando en el artículo.

1. Un ejemplo básico de comando de cambio de nombre

Suponga que tiene un montón de archivos con la extensión ".html" y desea cambiar el nombre de todos los archivos ".html" a ".php" de una sola vez. Por ejemplo, primero haga "ls -l" para verificar la lista de archivos con la extensión ".html".

# [email protected]:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

Ahora, desea cambiar la extensión de todos estos archivos de ".html" a ".php". Puede utilizar el siguiente comando "renombrar" con la expresión de perl como se muestra a continuación.

[email protected]:~$ rename 's/\.html$/\.php/' *.html

Nota: En el comando anterior, usamos dos argumentos.

  1. El primer argumento es una expresión de Perl que sustituye .html por .php.
  2. El segundo argumento le dice al comando de cambio de nombre que sustituya todos los archivos con * .php.

Verifiquemos si se cambia el nombre de todos los archivos a la extensión ".php", haciendo ls -l en el indicador.

[email protected]:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.php
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.php
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.php
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.php
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.php
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.php
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.php

Ahora puede ver arriba que todos los archivos html se renombran a php.

2. Verifique los cambios antes de ejecutar el comando Cambiar nombre

Mientras realiza tareas críticas o importantes de cambio de nombre, siempre puede verificar los cambios ejecutando el comando de cambio de nombre con el argumento "-n". El parámetro "-n" le dirá exactamente qué cambios se llevarán a cabo, pero los cambios no son reales. Aquí está el ejemplo del comando a continuación.

[email protected]:~$ rename -n 's/\.php$/\.html/' *.php

cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

Nota: La salida del comando anterior solo muestra cambios, pero en realidad los cambios no se realizan, a menos que ejecute el comando sin el modificador “-n”.

3. Imprimir salida de cambio de nombre

Vimos que el comando de cambio de nombre no mostraba ninguna información de los cambios que hace. Entonces, si desea obtener los detalles del comando de cambio de nombre (como hicimos con la opción "-n"), aquí usamos la opción "-v" para imprimir los detalles completos de todos los cambios realizados con el comando de cambio de nombre con éxito.

[email protected]:~$ rename -v 's/\.php$/\.html/' *.php

cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

4. Convierta todas las minúsculas a mayúsculas y Vise-Versa

Para cambiar el nombre por lotes de todos los archivos con nombres en minúsculas a mayúsculas. Por ejemplo, quiero ocultar todos estos archivos siguientes de minúsculas a mayúsculas.

[email protected]:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

Simplemente, use el siguiente comando con expresión perl.

[email protected]:~$ rename 'y/a-z/A-Z/' *.html

Una vez que haya ejecutado el comando anterior, puede verificar los cambios haciendo "ls -l".

[email protected]:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 CRICKET.HTML
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 ENTERTAINMENT.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 HEALTH.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 LIFESTYLE.HTML
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 NEWS.HTML
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 PHOTOS.HTML
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 SPORTS.HTML

Puede ver que el comando anterior realmente cambió el nombre de todos los nombres de archivo en minúsculas (con la extensión .HTML) a mayúsculas.

Del mismo modo, también puede convertir todos los caracteres en mayúsculas a minúsculas con el siguiente comando.

[email protected]:~$ rename 'y/A-Z/a-z/' *.HTML
[email protected]:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

5. Ponga en mayúscula la primera letra del nombre de archivo

Para poner en mayúscula solo la primera letra de cada nombre de archivo, use el siguiente comando.

# rename 's/\b(\w)/\U$1/g' *.ext

6. Sobrescribir archivos existentes

Si desea sobrescribir archivos existentes a la fuerza, use la opción "-f" como se muestra a continuación.

[email protected]:~$ rename -f 's/a/b/' *.html

Si desea saber más sobre el comando de cambio de nombre, escriba "man rename" en la terminal.

El comando de cambio de nombre es muy útil si se trata de cambios de nombre múltiples o por lotes de archivos desde la línea de comandos. Pruébelo y avíseme hasta qué punto es útil en términos de cambio de nombre de archivos.