Búsqueda de sitios web

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


A menudo utilizamos 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 integrada muy poderosa llamada rename. El comando rename se utiliza para cambiar el nombre de varios archivos o grupos, cambiar el nombre de los archivos a minúsculas, cambiar el nombre de los archivos a mayúsculas y sobrescribir archivos usando expresiones Perl.

El comando “rename” es parte del script Perl y reside en “/usr/bin/” en muchas distribuciones de Linux. Puede ejecutar el comando “cuál” para averiguar la ubicación del comando de cambio de nombre.

which rename
/usr/bin/rename
La sintaxis básica del comando Cambiar nombre
rename 's/old-name/new-name/' files

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

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
  1. -v: imprime los nombres de los archivos cuyo nombre se cambió correctamente.
  2. -n: muestra qué archivos se habrían renombrado.
  3. -f: fuerza la sobrescritura de archivos existentes.
  4. perlexpr: Expresión Perl.

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

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

Supongamos 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 vez. Por ejemplo, primero haga “ls -l” para verificar la lista de archivos con la extensión “.html”.

ravisaive@tecmint:~$ 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 expresión Perl como se muestra a continuación.

ravisaive@tecmint:~$ rename 's/\.html$/\.php/' *.html

Nota: En el comando anterior hemos utilizado dos argumentos.

  1. El primer argumento es una expresión 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 todos los archivos cambian de nombre a la extensión “.php”, haciendo ls -l en el mensaje.

ravisaive@tecmint:~$ 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 han cambiado de nombre 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 producirán, pero los cambios no se realizan de verdad. Aquí está el ejemplo del comando a continuación.

ravisaive@tecmint:~$ 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: El resultado 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 y cambiar el nombre de la salida

Vimos que el comando de cambio de nombre no mostraba ninguna información de los cambios que realiza. Entonces, si desea obtener los detalles del comando de cambio de nombre (como lo hicimos usando la opción “-n”), aquí usamos la opción “-v” para imprimir el archivo completo. Detalles de todos los cambios realizados con éxito por el comando de cambio de nombre.

ravisaive@tecmint:~$ 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 viceversa

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

De minúscula a mayúscula
ravisaive@tecmint:~$ 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.

ravisaive@tecmint:~$ rename 'y/a-z/A-Z/' *.html

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

ravisaive@tecmint:~$ 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 en realidad cambió el nombre de todos los nombres de archivos en minúsculas (con la extensión .HTML) a mayúsculas.

De mayúsculas a minúsculas

De manera similar, también puede convertir todos los caracteres mayúsculas a minúsculas usando el siguiente comando.

ravisaive@tecmint:~$ rename 'y/A-Z/a-z/' *.HTML
ravisaive@tecmint:~$ 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. Escriba en mayúscula la primera letra del nombre del archivo.

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


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

6. Sobrescribir archivos existentes

Si desea sobrescribir a la fuerza los archivos existentes, utilice la opción “-f” como se muestra a continuación.

ravisaive@tecmint:~$ rename -f 's/a/b/' *.html

Si desea obtener más información sobre el comando de cambio de nombre, escriba “man rename” en la terminal.

El comando rename es muy útil si se trata de cambiar el nombre de archivos de forma múltiple o por lotes desde la línea de comandos. Pruébelo y déjeme saber hasta qué punto es útil en términos de cambio de nombre de archivos.