Cómo cambiar el nombre de varios archivos a la vez en Linux
Cambiar el nombre de varios archivos en Linux suena como una tarea simple, pero puede ser bastante compleja. Es posible renombrar archivos de forma masiva con el comando mv
y un poco de scripting Bash, o usar las utilidades mmv
y rename
, que normalmente no se instalan de forma predeterminada. En esta guía, mostraremos varios ejemplos para cambiar el nombre de varios archivos a la vez desde la línea de comandos de Linux.
Cambiar el nombre de varios archivos Con mv
El comando mv
es una parte predeterminada de Linux y se puede usar para cambiar el nombre de varios archivos, pero se requiere un poco de scripting para hacer el trabajo. Algunos ejemplos también se basan en otras utilidades predeterminadas de Linux, como ls
, find
, xargs
, etc.
Ejemplo 1. Cambie todos los nombres de archivo a minúsculas.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'A-Z' 'a-z'`"; done
Ejemplo 2. Cambie todos los nombres de archivo a mayúsculas.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'a-z' 'A-Z'`"; done
Ejemplo 3. Cambie todas las extensiones de archivo de .jpeg
a .jpg
.
$ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
Ejemplo 4. Elimine la extensión de archivo .bak
de todos los archivos.
$ for f in `ls *.bak`; do mv $f ${f%.*}; done
Ejemplo 5. Agregue una extensión de archivo .bak
a todos los archivos.
$ for f in `ls`; do mv $f $f.bak; done
Ejemplo 6. Use xargs
para añadir «_backup» a cada archivo.
$ ls * | xargs -I{} mv {} {}_backup
Ejemplo 7. Utilice los comandos find
, sed
y mv
para cambiar todos los archivos a minúsculas.
$ find . -maxdepth 1 -type f -name '**'|sed -n 's/\(.*\/\)\(.*\)/mv -n -v -T \L/p'|sh
Ejemplo 8. Utilice los comandos find -exec
y mv
para añadir «_backup» a cada archivo que termine en la extensión .log
.
$ find . -type f -name "*.log" -exec mv {} {}_backup \;
Ejemplo 9. Similar al ejemplo anterior, pero reemplace la opción -exec
de find por xargs
para agregar «_backup» a cada archivo que termine en la extensión .log
.
$ find . -type f -name '*log' -print0 | xargs --null -I{} mv {} {}_backup
Ejemplo 10. Reemplace un patrón en cada archivo usando mv
y sed
. Esto reemplazará » IMG «por» Vacaciones » en cada archivo .jpg
.
$ for f in *.jpg; do mv "$f" "`echo "$f" | sed s/IMG/Vacation/`"; done
Ejemplo 11. Agregue la marca de tiempo actual a todos los archivos que terminen en .log
. Esto cambiaría un archivo como access.log
a access_20210418040151.log
.
$ for f in *.log; do mv "$f" "${f%.log}"_`date +%Y%m%d%H%M%S`.log; done
Cambie el nombre de varios archivos Con rename
La utilidad de cambio de nombre hace que nuestras tareas de cambio de nombre masivo sean un poco más fáciles, pero la utilidad no siempre se instala de forma predeterminada. Use el comando apropiado a continuación para instalarlo con el administrador de paquetes de su sistema.
Ubuntu, Debian y Linux Mint:
$ sudo apt install rename
Fedora, AlmaLinux, CentOS y RHEL:
$ sudo dnf install prename
Arch Linux y Manjaro:
$ sudo pacman -S perl-rename
-n
en sus comandos rename
si desea obtener una vista previa de los cambios antes de hacerlos.Ejemplo 1. Cambie todos los nombres de archivo a minúsculas.
$ rename 'y/A-Z/a-z/' *
Ejemplo 2. Cambie todos los nombres de archivo a mayúsculas.
$ rename 'y/a-z/A-Z/' *
Ejemplo 3. Elimine la extensión .bak
de todos los archivos.
$ rename 's/\.bak$//' *.bak
Ejemplo 4. Cambie la extensión de todos los archivos .jpeg
a .jpg
.
$ rename 's/\.jpeg/\.jpg/' *.jpeg
Ejemplo 5. Cambie la extensión en mayúsculas .JPG
a minúsculas .jpg
para todos los archivos.
$ rename 's/\.JPG/\.jpg/' *.JPG
Ejemplo 6. Elimine los espacios en blanco de todos los nombres de archivo.
$ rename "s/ *//g" *
Ejemplo 7. Reemplace los espacios en blanco con guiones bajos para todos los nombres de archivo.
$ rename 's/\s+/_/g' *
Ejemplo 8. Escriba en mayúscula la primera letra de todos los nombres de archivo.
$ rename 's/\b(\w)/\U/g' *
Ejemplo 9. Reemplazar un patrón en cada nombre de archivo. Este comando reemplazará » IMG «por» Vacation » en cada archivo .jpg
.
$ rename 's/IMG/Vacation/' *.jpg
Ejemplo 10. Eliminar parte de un nombre de archivo. Este comando eliminará «IMG_» de cada archivo .jpg
.
$ rename 's/IMG_//' *.jpg
Ejemplo 11. Añada la extensión .bak
a todos los archivos.
$ rename 's/(.*)/.bak/' *
Cambie el nombre de varios archivos Con mmv
La utilidad mmv destaca por renombrar archivos según patrones, como eliminar o agregar cadenas a todos los archivos o reorganizar partes de los nombres de archivo. Por lo general, no se instala de forma predeterminada, pero puede usar el comando apropiado a continuación para instalar mmv con el administrador de paquetes de su sistema.
Ubuntu, Debian y Linux Mint:
$ sudo apt install mmv
Fedora, AlmaLinux, CentOS y RHEL:
$ sudo dnf install mmv
Arch Linux y Manjaro (instalación desde AUR):
$ git clone https://aur.archlinux.org/mmv.git$ cd mmv/$ makepkg -si
-n
en sus comandos mmv
si desea obtener una vista previa de los cambios antes de hacerlos. Ejemplo 1. Cambie la extensión de todos los archivos .jpeg
a .jpg
.
$ mmv '*.jpeg' '#1.jpg'
Ejemplo 2. Cambie todos los nombres de archivo a minúsculas.
$ mmv '*' '#l1'
Ejemplo 3. Cambie todos los nombres de archivo a mayúsculas.
$ mmv '*' '#u1'
Ejemplo 4. Reorganizar partes de un nombre de archivo. Este comando cambiará los archivos de música con patrón Song-Artist.mp3
a Artist-Song.mp3
.
$ mmv '*-*.mp3' '#2-#1.mp3'
Ejemplo 5. Reemplace la primera aparición de » IMG «por» Vacaciones » en todos los nombres de archivo.
$ mmv '*IMG*' '#1Vacation#2'
Ejemplo 6. Agregue un prefijo a cada nombre de archivo. Este comando antepondrá «backup_» a cada archivo .log
.
$ mmv '*.log' 'backup_#1.log'
Ejemplo 7. Agregue un sufijo a cada nombre de archivo. Este comando añadirá «_backup» a cada archivo .log
.
$ mmv '*.log' '#1.log_backup'
Ejemplo 8. Elimine el prefijo «IMG_» de todos los archivos .jpg
.
$ mmv 'IMG_*.jpg' '#1'
Ejemplo 9. Elimine el sufijo «_old» de todos los archivos.
$ mmv '*_old' '#1'
Renombrar archivos a granel a través de la interfaz gráfica de usuario
Si la línea de comandos no es realmente lo tuyo, es posible cambiar el nombre de varios archivos a la vez a través de la interfaz gráfica de usuario. Una de las mejores herramientas para hacer el trabajo es la aplicación de cambio de nombre masivo que viene con Thunar.
Thunar es el navegador de archivos predeterminado para Xfce, pero puede instalarlo independientemente del entorno de escritorio que esté utilizando. Si ya está utilizando Xfce o Thunar, el cambio de nombre masivo ya forma parte de su sistema. De lo contrario, use el comando apropiado a continuación para instalarlo con el administrador de paquetes de su sistema.
Ubuntu, Debian y Linux Mint:
$ sudo apt install thunar
Fedora, AlmaLinux, CentOS y RHEL:
$ sudo dnf install thunar
Arch Linux y Manjaro:
$ sudo pacman -S thunar
Paso 1. Después de instalar Thunar, busque y abra la utilidad de cambio de nombre masivo.
Paso 2. Haga clic en el signo más para agregar archivos a los que desea cambiar el nombre.
Paso 3. Elija de la lista de opciones lo que desea hacer con los archivos. Puede cambiarlos todos a letras mayúsculas o minúsculas, agregar una fecha y hora, insertar texto en una posición determinada, agregar numeración automática, reemplazar caracteres o buscar y reemplazar ciertos patrones en los nombres de archivo, entre otras cosas. En el siguiente ejemplo, hemos agregado una extensión de archivo .txt
a todos nuestros archivos.
Paso 4. Cuando esté satisfecho con los cambios de nombre previsualizados en la columna «Nuevo nombre», haga clic en «Renombrar archivos» para realizar el cambio de nombre masivo.
Cambiar el nombre de varios archivos en WSL
Si está utilizando el Subsistema Windows para Linux, algunos comandos anteriores no funcionarán, en particular los que implican cambiar archivos a minúsculas o mayúsculas. Windows no distingue mayúsculas de minúsculas, por lo que considera que File.txt
, file.txt
y FILE.txt
son el mismo archivo.
Simplemente obtendrá un error de que el archivo ya existe si intenta cambiar el nombre de FILE.txt
a file.txt
. Para evitar este problema, utilice uno de los siguientes ejemplos.
Ejemplo 1. Cambie la extensión en mayúsculas .JPG
a minúsculas .jpg
para todos los archivos (utilizando las utilidades predeterminadas).
$ for f in *.JPG; do mv "$f" "${f%.JPG}.jpgaux"; done && for f in *.jpgaux; do mv "$f" "${f%.jpgaux}.jpg"; done
Ejemplo 2. Cambie la extensión en mayúsculas .JPG
a minúsculas .jpg
para todos los archivos (utilizando la utilidad de cambio de nombre).
$ rename 's/\.JPG$/\.jpgaux/' *.JPG && rename 's/\.jpgaux$/\.jpg/' *.jpgaux
Ejemplo 3. Cambie la extensión en mayúsculas .JPG
a minúsculas .jpg
para todos los archivos (utilizando la utilidad mmv).
$ mmv '*.JPG' '#1.jpgaux' && mmv '*.jpgaux' '#1.jpg'
Ejemplo 4. Cambie todos los nombres de archivo a minúsculas (utilizando utilidades predeterminadas).
$ for f in `ls | grep `; do mv "$f" "`echo $f.aux | tr 'A-Z' 'a-z'`"; done && for f in `ls *.aux`; do mv $f ${f%.*}; done
Ejemplo 5. Cambie todos los nombres de archivo a minúsculas (utilizando la utilidad mmv).
$ mmv '*' '#l1.aux' && mmv '*.aux' '#1'
Conclusión
Es posible usar las utilidades Bash predeterminadas para todo el cambio de nombre masivo en Linux, pero las herramientas de cambio de nombre y mmv lo hacen mucho más fácil. También podemos usar la aplicación de cambio de nombre masivo de Thunar cuando preferimos usar GUI sobre la línea de comandos. Los ejemplos de esta guía cubren una amplia gama de escenarios de cambio de nombre y se pueden adaptar fácilmente para adaptarse a otras necesidades.