Renombrar múltiples archivos en Linux

Renombrar archivos en Linux es una tarea que se realiza normalmente con el comando mv (aunque no es la única forma de hacerlo). Hacerlo desde la línea de comandos es particularmente útil cuando tienes que renombrar muchos archivos, una tarea que sería tediosa desde la interfaz gráfica del explorador de archivos si éste no tiene soporte para renombrar múltiples archivos.

Renombrar múltiples archivos requiere la ejecución de un pequeño script que llame al comando mv para cada uno de los archivos que se quieren renombrar. Este script se puede condensar para ejecutarlo directamente desde la línea de comandos.

Para este script en particular usaremos una opción llamada sustitución de parámetros que consiste en cambiar el texto de una variable de entorno al sustituir una coincidencia de texto por un texto distinto. Puedes verlo en acción creando una nueva variable de entorno y viendo el efecto de la sustitución usando el siguiente formato:

${Var/Patrón/Reemplazo}
La primera aparición de Patrón dentro de la variable de entorno Var será reemplazada por Reemplazo

A continuación se muestra un ejemplo:

monstruosoft@PC:~$ var=monstrosoft
monstruosoft@PC:~$ echo $var
monstrosoft
monstruosoft@PC:~$ echo ${var/monstro/monstruo}
monstruosoft

Como puedes ver, este tipo de sustitución es sencilla pero puede sernos útil para renombrar los archivos.

Antes de continuar debemos revisar el script que obtenga la lista de archivos que deseamos renombrar; para ello usaremos un for como se muestra a continuación:

monstruosoft@PC:~$ for file in shot*; do echo ${file}; done
shot0001.jpg
shot0002.jpg
shot0003.jpg
shot0004.jpg
shot0005.jpg

Como puedes ver, este comando obtiene la lista de archivos que coinciden con nuestra búsqueda. Ahora podemos proceder a renombrar los archivos de la lista simplemente llamando el comando mv en lugar de echo.

monstruosoft@PC:~$ ls shot*
shot0001.jpg
shot0002.jpg
shot0003.jpg
shot0004.jpg
shot0005.jpg
monstruosoft@PC:~$ ls Captura*
ls: no se puede acceder a Captura*: No existe el fichero o el directorio
monstruosoft@PC:~$ for file in shot*; do mv -i "${file}" "${file/shot/Captura de Pantalla }"; done
monstruosoft@PC:~$ ls shot*
ls: no se puede acceder a shot*: No existe el fichero o el directorio
monstruosoft@PC:~$ ls Captura*
Captura de Pantalla 0001.jpg  Captura de Pantalla 0004.jpg
Captura de Pantalla 0002.jpg  Captura de Pantalla 0005.jpg
Captura de Pantalla 0003.jpg

Usando este script podemos renombrar múltiples archivos usando una forma simple de sustitución pero eso es suficiente en muchos casos.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s