Ich habe versucht, PNG-Bilddateien mit einer bestimmten Höhe (über 500 Pixel) zu finden. Ich weiß, dass dies file
Bildabmessungen zurückgibt. Beispiel:
$ file TestImg1a.png
TestImg1a.png: PNG image data, 764 x 200, 4-bit colormap, non-interlaced
Aber ich muss dies verwenden, um alle Dateien in einem Verzeichnis mit einer Höhe über 500px zu finden. Ich kann alle Dateien unabhängig von der Höhe ausdrucken:
find . -name '*.png' | xargs file | awk '{print $7 " " $1}'
Aber wie beschränke ich die 7 US-Dollar auf Ergebnisse über 500?
quelle
Ich bin der Meinung, dass etwas anderes als Shell-Dienstprogramme angemessener wäre, z. B. Perl:
Weniger herumhüpfen mit dem Versuch, $ 7 zu analysieren; Holen Sie sich einfach die Abmessungen direkt. Ja, Sie benötigen das Image :: Info-Modul, aber unter CentOS / RHEL ist es ein Standardpaket, sodass Sie es einfach ausführen können
yum install perl-Image-Info
.quelle
apt-get install libimage-info-perl
Sie können auch
identify
von ImageMagick aus Folgendes verwenden:Oder in OS X:
quelle
quelle
96, ./4/45445106_w185.png: 86, ./4/404358x_w185.png: 86, ./4/404341x_w185.png: 80, ./4/475986_w185.png: 621, ./4/481693_w185.png: 667, ./4/42513x_w185.png: 86, ./4/404372x_w185.png:
Diese Lösung wird auch funktionieren. Der letzte Teil des Codes (
mv "$img" ./lowpixel
) verschiebt Dateien unterhalb einer bestimmten Breite und Höhe in einen Ordner. Im folgenden Beispiel werden alle JPG-Bilder mit einer Größe von weniger als 300 x 300 in einen Ordner mit dem Namen verschobenlowpixel
:find -iname \*.jpg | while read img; do anytopnm "$img" | pamfile | perl -ane 'exit 1 if $F[3]<300 || $F[5]<300' || mv "$img" ./lowpixel; done
quelle