
Tengo un directorio con miles de archivos de imágenes, en su mayoría JPG pero algunos PNG. Los archivos no tienen extensión, solo están numerados. Necesito convertirlos todos a JPG.
UsandoencontrarPuedo obtener una lista de todos los archivos con sus tipos, y a partir de ahí puedo usar Imagemagick para convertir de PNG a JPG especificando su tipo:
convert png:10020 jpg:10020.jpg
Pero me gustaría hacer esto por lotes en todos los archivos. ¿Cómo puedo canalizar la salida deencontrary convertir todos los archivos PNG a JPG?
Respuesta1
find . -type f | while read IN; do
if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
convert png:$IN jpg:$IN.jpg;
fi;
done;
Significado de los argumentos:
.
Buscar en el directorio actual-type f
Simplemente busque archivos, no directorios/sockets/etc.while read IN; do
Coloque cada nombre de archivo en la variableIN
y ejecute el bucle en él.if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
Comprueba si el archivo es PNG...convert png:$IN jpg:$IN.jpg;
...y si es así, conviértelo.fi; done;
¡Hemos terminado!
Lo he probado esta vez y funciona, convirtiendo un directorio lleno de PNG sin la .png
extensión a JPG.