Tengo un directorio y algunas de las extensiones de los archivos están en mayúsculas (.JPG) en lugar de minúsculas.
Quiero asegurarme de que cada archivo tenga .jpg como extensión. ¿Cómo haría esto desde un indicador de shell?
Tengo un directorio y algunas de las extensiones de los archivos están en mayúsculas (.JPG) en lugar de minúsculas.
Quiero asegurarme de que cada archivo tenga .jpg como extensión. ¿Cómo haría esto desde un indicador de shell?
Respuestas:
Uso de la expansión de parámetros de Shell :
for f in *.JPG; do
mv "${f}" "${f%%.JPG}.jpg"
done
Los "
personajes se ocuparán de los nombres de archivo que contienen espacios, como suelen hacer las fotografías.
/path/to/*.JPG
. Puede enviar su propia respuesta, por supuesto :)
Si puede usar herramientas externas (no solo bash), ¡verifique el rename
comando!
rename .JPG .jpg *
El rename
es parte de util-linux
.
perl
acepta diferentes argumentos para hacer lo mismo.
Sugeriría echar un vistazo al mmv
comando. Es adecuado exactamente para este tipo de tareas. En su escenario sería:
#> mmv "*.JPG" "#1.jpg"
La página de manual está llena de ejemplos, por lo que no lleva tiempo acostumbrarse a ella.
En los sistemas Debian se puede instalar con:
#> aptitude install mmv
Si no tiene espacios en los nombres de archivo:
for f in *.JPG; do mv $f `echo $f | sed 's/JPG$/jpg/'`; done
mv
.