La necesidad: Cambiar la extensión de muchos archivos desde .XML a .xml (que increíblemente contrario a lo que muchos puedan pensar, son extensiones distintas).
El problema: Son MUCHOS archivos, y hacerlo a mano, uno por uno, es una labor tediosa y muy demandante de tiempo. No deseaba tampoco instalar aplicaciones externas para el renombrado masivo de archivos.
La solución: Nuevamente por línea de comando, dentro de la carpeta destino:
El problema: Son MUCHOS archivos, y hacerlo a mano, uno por uno, es una labor tediosa y muy demandante de tiempo. No deseaba tampoco instalar aplicaciones externas para el renombrado masivo de archivos.
La solución: Nuevamente por línea de comando, dentro de la carpeta destino:
ls -1 *.XML | awk -F . '{ print $1 }' | xargs -i mv {}.XML {}.xml
Explicación del comando:
- ls -1 *.XML : Me entrega un listado de todos los archivos de extensión .XML , un archivo por línea, sin detalles, solamente el nombre del archivo.
- awk -F . '{ print $1 }' : Recupera el nombre del archivo sin extensión. -F . le indica al comando que el separador a usar es el caracter . (punto) y '{ print $1 }' imprime la primera parte de esta separación, ie: sólo el nombre.
- xargs -i mv {}.XML {}.xml : Ejecuta el comando mv (mover) para hacer el renombrado de los archivos con su nueva extensión. -i es para indicar que la ejecución será "interactiva", recibiendo cada parámetro (en este caso el nombre del archivo sin extensión) como entrada, y {} es reemplazado en cada ejecución por el valor de entrada.
- Los | (pipe) entre cada comando se encargan de encadenarlos transformando la salida de uno en la entrada del siguiente, como una tuberia (pipe en inglés, pronunciada paip).
Funciona :-)
No hay comentarios.:
Publicar un comentario