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: Print names of files successfully renamed.
  2. -n: Show what files would have been renamed.
  3. -f: Force overwrite existing files.
  4. perlexpr: Perl Expression.

Para comprender mejor esta utilidad, hemos analizado 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. First argument is a perl expression that substitute .html with .php.
  2. Second argument tells the rename command to substitute all the files with *.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 importantes o críticas de cambio de nombre, siempre puede comprobar los cambios ejecutando el comando de cambio de nombre con el argumento "-n". El parámetro "-n" le dirá exactamente qué cambios se llevarían 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 los 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 lo 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 convertir 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 la 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.