enero 1, 2022

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.

Los ejemplos de esta guía se utilizan para cambiar el nombre de todos los archivos del directorio de trabajo actual. La mayoría de estos comandos se pueden ajustar fácilmente para que funcionen de forma recursiva. Tenga en cuenta que algunos ejemplos también renombrarán directorios.

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
Use la opción -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
Use la opción -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.

 Abrir 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.

Agregar una lista de archivos a la aplicación de cambio de nombre masivo

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.

 Herramienta de cambio de nombre masivo que muestra los nombres antiguos y los nombres de archivo nuevos

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.

Finalizar el trabajo de 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.