Renombrar múltiples nombres de ficheros en Linux

En mi día a día de administrador de sistemas, me encuentro muchas veces en la situación de tener que renombrar múltiples ficheros, la mayoría de veces debido a que no cumplen con los requisitos de un servidor web para ser leidos, generalmente por el uso de espacios en blanco. En el artículo de hoy veremos como realizar dichos cambios mediante la consola de comandos.

ficheros-antiguos-01

Trabajando con el comando sed

Para nuestro trabajo vamos a utilizar la potente caja de herramientas que es la línea de comandos en GNU Linux. La herramienta que usaremos hoy se llama sed. Se trata de un protente programa de tratamiento de textos, escrito para funcionar en UNIX.  Su funcionamiento es bien básico, acepta como entrada un fichero, lo lee, modifica línea a línea siguiendo un script, mostrando su salida standard. Sed lo podemos utilizar para manipular flujos de datos, buscar y reemplazar texto (también expresiones regulares), cortar líneas, etcétera.

A nivel de prueba vamos a crear una serie de ficheros con espacios en blanco, utilizando el comando touch:

  1. touch "Archivo 1.txt" "Archivo 2.txt" "Archivo 3.txt" "Archivo 4 y 5.txt" "Archivo 6 y 7.txt"

Si listamos con ls -l veremos:

sed-gnu-linux-01

Ahora veremos la combinación de comandos necesaria para poder realizar el cambio de espacio en blanco por barra baja. Primero utilizamos for, para listar todos los ficheros que tengan extensión .txt , a continuación do (todo for requiere un do)para asignar la salida standard de sed a la variable NUEVOFICHERO, y por último renombramos los ficheros por la salida.

  1. for FILE in *.txt ; do NUEVOFICHERO=`echo $FILE | sed 's/ /_/g'`; mv "$FILE" $NUEVOFICHERO; done

Y de ésta manera ya podemos ver la lista de ficheros modificados.

sed-gnu-linux-02

Hoy ha sido un tip bastante breve pero lo más de útil : )

Referencias: Web Santiago Romero | Wikipedia