Cambiar nombre de archivos recursivamente
Aunque es una tarea sencilla y hay múltiples métodos que se pueden usar, siempre que necesito renombrar de una gran cantidad de archivos tengo que recurrir a San Google para hacerlo. Por esto prefiero dejar este artículo como recordatorio para mi y para algún otro despistado como yo.
En general me pasa con archivos de imagen, como jpg. Las cámaras, celulares y otros generadores de imágenes se empeñan en utilizar mayúsculas para las extensiones de los archivos de fotos y, aunque debe ser un TOC ¡me molesta! Por eso, para hacer cambiar recursivamente todas las extensiones de .JPG
a .jpg
podemos usar:
for file in *.JPG; do mv "${file}" "${file/.JPG/.jpg}"; done
Del mismo modo, podemos cambiar una parte del nombre que queramos, por ejemplo si hubiésemos hecho una conversión de extensión bmp
a jpg
con la utilidad convert
de ImageMagick
con el comando:
find . -name "*.bmp" -type f -exec convert '{}' '{}'.jpg \;
nos habrán quedado archivos con nombres que incluyen ambas extensiones, algo como imagen.bmp.jpg
. Para eliminar la cadena .bmp
del nombre de todos los archivos afectados podemos ejecutar:
for file in *; do mv "${file}" "${file/.bmp/}"; done