
Eu tenho um diretório com milhares de arquivos de imagem, principalmente JPG, mas alguns PNG. Os arquivos não têm extensão, são apenas numerados. Preciso converter todos eles para JPG.
UsandoencontrarPosso obter uma lista de todos os arquivos com seus tipos e, a partir disso, posso usar o Imagemagick para converter de PNG para JPG, especificando seu tipo:
convert png:10020 jpg:10020.jpg
Mas eu gostaria de fazer isso em lote em todos os arquivos. Como posso canalizar a saída deencontrare converter todos os arquivos PNG para JPG?
Responder1
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 dos argumentos:
.
Encontre no diretório atual-type f
Basta encontrar arquivos, não diretórios/soquetes/etc.while read IN; do
Coloque cada nome de arquivo na variávelIN
e execute o loop nele.if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
Verifique se o arquivo é PNG...convert png:$IN jpg:$IN.jpg;
...e se for, converta-o.fi; done;
Acabamos!
Desta vez testei e funciona, convertendo um diretório cheio de PNG's sem .png
extensão para JPG's.