Verwenden Sie den Befehl „find“, um nach PNG-Dateien zu suchen, und leiten Sie die Ausgabe zur Stapelkonvertierung an Imagemagick weiter

Verwenden Sie den Befehl „find“, um nach PNG-Dateien zu suchen, und leiten Sie die Ausgabe zur Stapelkonvertierung an Imagemagick weiter

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:

  1. .
    Im aktuellen Verzeichnis suchen

  2. -type f
    Suchen Sie nur nach Dateien, nicht nach Verzeichnissen/Sockets/usw.

  3. while read IN; do
    Fügen Sie jeden Dateinamen in die Variable ein INund führen Sie die Schleife darauf aus.

  4. if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
    Überprüfen Sie, ob die Datei ein PNG ist ...

  5. convert png:$IN jpg:$IN.jpg;
    ... und wenn ja, konvertieren Sie es.

  6. fi; done;
    Wir sind fertig!

Ich habe es dieses Mal getestet und es funktioniert und konvertiert ein Verzeichnis voller PNGs ohne Erweiterung .pngin JPGs.

verwandte Informationen