Você pode tentar com uma linha de comando for
Teste com um 'dry run',
for i in *.png;do echo convert -resize 1024X768 "$i" "${i/.png}.jpg";done
e quando sua saída parece boa, remova echo
e faça a conversão,
for i in *.png;do convert -resize 1024X768 "$i" "${i/.png}.jpg";done
Alternativa com find
e rename
Se você quiser evitar um loop no bash, você pode usar find
,
find -maxdepth 1 -name "*.png" -exec echo convert -resize 1024X768 {} {}.jpg \;
e quando sua saída parece boa, remova o eco e faça a conversão,
find -maxdepth 1 -name "*.png" -exec convert -resize 1024X768 {} {}.jpg \;
Depois disso, você pode usar rename
para tornar os nomes dos arquivos de destino mais agradáveis (podar a desajeitada extensão dupla)
rename -n s/.png.jpg$/.jpg/ *.png.jpg
e quando sua saída parece boa, remova -n
e faça a renomeação real,
rename s/.png.jpg$/.jpg/ *.png.jpg
Provavelmente existem maneiras de fazer isso em uma etapa (sem renomear), mas não sei como. Talvez alguém cite e descreva uma maneira de fazer isso.