
Ich habe ein Verzeichnis mit Tausenden von Bilddateien, hauptsächlich JPG, aber auch einige PNG. Die Dateien haben keine Erweiterung, sie sind nur nummeriert. Ich muss sie alle in JPG konvertieren.
Verwenden vonfindenIch kann eine Liste aller Dateien mit ihren Typen abrufen und anhand dieser Liste mit Imagemagick durch Angabe ihres Typs eine Konvertierung von PNG in JPG durchführen:
convert png:10020 jpg:10020.jpg
Aber ich möchte dies als Batch über alle Dateien hinweg tun. Wie kann ich die Ausgabe vonfindenund alle PNG-Dateien in JPG konvertieren?
Antwort1
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;
Bedeutung der Argumente:
.
Im aktuellen Verzeichnis suchen-type f
Suchen Sie nur nach Dateien, nicht nach Verzeichnissen/Sockets/usw.while read IN; do
Fügen Sie jeden Dateinamen in die Variable einIN
und führen Sie die Schleife darauf aus.if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
Überprüfen Sie, ob die Datei ein PNG ist ...convert png:$IN jpg:$IN.jpg;
... und wenn ja, konvertieren Sie es.fi; done;
Wir sind fertig!
Ich habe es dieses Mal getestet und es funktioniert und konvertiert ein Verzeichnis voller PNGs ohne Erweiterung .png
in JPGs.