Introducción
Linux ofrece varias opciones para cambiar el nombre de archivos, incluyendo el uso de la interfaz gráfica y múltiples comandos de terminal dedicados. Esto hace relativamente fácil cambiar el nombre de archivos individuales, pero puede resultar desafiante cambiar el nombre de múltiples archivos a la vez.
En este tutorial, veremos diferentes comandos que puedes utilizar en la terminal de Linux para cambiar el nombre de archivos en Linux.
Prerrequisitos
- Un sistema que ejecute una distribución de Linux
- Una cuenta con privilegios de sudo
- Acceso a la ventana de la terminal/línea de comandos
- Acceso a un editor de texto, como Vim o Nano
Cambiar el nombre de archivos con el comando mv
El comando mv (move) de Linux se utiliza para mover archivos y directorios desde la terminal. Utiliza la siguiente sintaxis:
mv [opciones] [origen] [destino]
Si especificas un directorio como destino al usar el comando mv, el archivo de origen se mueve a ese directorio. Si el destino es otro nombre de archivo, el comando mv cambia el nombre del archivo de origen a ese nombre en su lugar.
Nota: Aprende más sobre cómo utilizar el comando mv en nuestra guía sobre cómo mover directorios en Linux.
Cambiar el nombre de un solo archivo con el comando mv
Utilizar el comando mv con su sintaxis predeterminada te permite cambiar el nombre de un solo archivo:
mv [opciones] [nombre de archivo actual] [nuevo nombre de archivo]
Por ejemplo, si queremos cambiar el nombre de example1.txt a example2.txt, usaríamos:
mv example1.txt example2.txt
Dado que no hay salida si el comando es exitoso, estamos utilizando el comando ls para comprobar si el nombre ha cambiado:
ls -l

Cambiar el nombre de múltiples archivos con el comando mv
Por sí solo, el comando mv cambia el nombre de un solo archivo. Sin embargo, al combinarlo con otros comandos, puedes cambiar el nombre de múltiples archivos al mismo tiempo.
Un método es utilizar el comando find para seleccionar varios archivos con un nombre similar, y luego usar el comando mv para cambiarles el nombre:
find . -depth -name "[elemento del nombre de archivo actual]" -exec sh -c 'f="{}"; mv -- "$f" "${f%[elemento del nombre de archivo actual]}[elemento del nuevo nombre de archivo]"' \;
Utilizando esta sintaxis, el comando find define un elemento del nombre de archivo actual como parámetro de búsqueda. Luego, -exec ejecuta el comando mv en cualquier archivo que coincida con la búsqueda, cambiando sus nombres actuales por el nuevo.
Por ejemplo, si tenemos example1.txt, example2.txt y example3.txt, y queremos cambiar la extensión a .pdf:
find . -depth -name "*.txt" -exec sh -c 'f="{}"; mv -- "$f" "${f%.txt}.pdf"' \;

Otro método es utilizar el comando mv como parte de un bucle for en un script de bash.
Utilizando el mismo ejemplo, comienza creando y abriendo un archivo de script de bash utilizando un editor de texto como Nano:
sudo nano rename_files.sh
Nota: Aprende más sobre cómo utilizar scripts de bash para gestionar archivos y directorios en Linux.
Agrega las siguientes líneas al script:
#!/bin/bash
for f in *.txt; do
mv -- "$f" "${f%.txt}.pdf"
done
En el script anterior:
- La primera línea instruye al script a buscar todos los archivos en el directorio actual que terminen con .txt.
- La segunda línea utiliza el comando mv en cada archivo encontrado para reemplazar la extensión .txt por .pdf.
- La tercera línea termina el segmento del bucle.
Pulsa Ctrl+X, luego escribe Y y pulsa Enter para guardar los cambios en el script y salir.
Utiliza el comando sh para ejecutar el script:
sh rename_files.sh

Nota: Aprende cómo comparar dos archivos utilizando el comando diff.
Cambiar el nombre de un archivo con el comando rename
El comando rename se utiliza para cambiar el nombre de múltiples archivos o directorios en Linux. Ofrece más funciones que el comando mv, pero puede resultar más desafiante de usar, ya que requiere conocimientos básicos de expresiones Perl.
Cómo instalar el comando rename
En muchas distribuciones de Linux, el comando rename no está disponible de forma predeterminada. Si tu sistema no tiene el comando rename, instálalo con:
- Para Ubuntu y Debian, utiliza
sudo apt install rename
- Para CentOS y Fedora, utiliza
sudo yum install prename
- Para Arch Linux, utiliza
sudo pacman -S rename
Sintaxis y opciones del comando rename
Existen tres tipos de expresiones regulares Perl: coincidencia, sustitución y traducción. El comando rename utiliza expresiones de sustitución y traducción para cambiar los nombres de archivos y directorios.
Las expresiones de sustitución reemplazan una parte del nombre de archivo por otra cadena diferente. Utilizan la siguiente sintaxis:
rename [opciones] 's/[elemento del nombre de archivo]/[reemplazo]/' [nombre de archivo]
Con esta sintaxis, el comando cambia el nombre del archivo reemplazando la primera aparición del elemento del nombre de archivo por el reemplazo. En el comando anterior:
- rename: Invoca el comando rename.
- [opciones]: Proporciona un argumento opcional que cambia la forma en que se ejecuta el comando.
- s: Indica una expresión de sustitución.
- [elemento del nombre de archivo]: Especifica la parte del nombre de archivo que quieres reemplazar.
- [reemplazo]: Especifica un reemplazo para la parte del nombre de archivo actual.
- [nombre de archivo]: Define el archivo que quieres renombrar.
Una expresión de traducción traduce una cadena de caracteres en otra, caracter por caracter. Este tipo de expresión utiliza la siguiente sintaxis:
rename [opciones] 'y/[cadena 1]/[cadena 2]/' [nombre de archivo]
Un ejemplo de un comando rename utilizando una expresión de traducción:
rename 'y/abc/xyz/'
En este ejemplo, se reemplaza cada carácter a en el nombre de archivo por una x, cada b por una y, y cada c por una z.
El comando rename utiliza las siguientes opciones:
- -a: Reemplaza todas las apariciones del elemento del nombre de archivo en lugar de solo la primera.
- -f: Obliga a sobrescribir los archivos existentes.
- -h: Muestra el texto de ayuda.
- -i: Muestra un mensaje antes de sobrescribir los archivos existentes.
- -l: Reemplaza la última aparición del elemento del nombre de archivo en lugar de la primera.
- -n: Realiza una simulación, sin realizar cambios permanentes. Se combina mejor con la salida detallada (-v).
- -s: Cambia el nombre del destino en lugar del enlace simbólico.
- -v: Muestra una versión detallada de la salida.
- -V: Muestra la versión del comando.
Ejemplos del comando rename
1. Cambiar la extensión del archivo
Volviendo a nuestro último ejemplo, para cambiar la extensión del archivo de .txt a .pdf, utiliza:
rename -v 's/.txt/.pdf/' *.txt

2. Reemplazar una parte del nombre de archivo
Reemplazar una parte diferente del nombre de archivo sigue la misma sintaxis. Para cambiar el nombre de example1.txt, example2.txt y example3.txt a test1.txt, test2.txt y text3.txt, utiliza:
rename -v 's/example/test/' *.txt

3. Eliminar una parte del nombre de archivo
La opción rename también te permite eliminar una parte del nombre de archivo omitiendo la parte de reemplazo de la expresión. Por ejemplo, si queremos acortar example a ex:
rename -v 's/ample//' *.txt

4. Cambiar el nombre de archivos con nombres similares
Otro uso de la opción rename es cambiar el nombre de archivos con nombres similares. Por ejemplo, si queremos cambiar el nombre de archivos con example y sample en su nombre a test:
rename -v 's/(ex|s)ample/test/' *.txt

5. Renombrar archivos carácter por carácter
El comando rename también te permite utilizar expresiones de traducción para cambiar el nombre de archivos carácter por carácter. Por ejemplo, si quieres renombrar varios archivos llamados example file reemplazando el espacio en blanco por un guión bajo (_):
rename -v 'y/ /\_/' *.txt

6. Convertir caracteres minúsculos
Para convertir caracteres minúsculos en nombres de archivo a caracteres mayúsculos, utiliza:
rename -v 'y/a-z/A-Z/' *.txt

7. Convertir caracteres mayúsculos
Lo mismo se aplica en sentido contrario si cambiamos el orden de los caracteres mayúsculos y minúsculos en la expresión:
rename -v 'y/A-Z/a-z/' *.TXT

Nota: Ten cuidado al cambiar el caso de los caracteres, ya que esto también cambia la extensión del archivo.
Conclusión
Después de leer este tutorial, deberías ser capaz de cambiar el nombre de archivos utilizando los comandos mv y rename en Linux.
Aprende más sobre cómo utilizar comandos de Linux en nuestra Hoja de trucos de comandos de Linux.