Welches Programm hat die Funktion, Bilder nach Pixelgröße / Auflösung / Abmessungen zu sortieren.
Sehr seltsam, aber dennoch so leistungsfähig. DigiKam hat keine so einfache Funktion.
Irgendwelche Vorschläge?
Welches Programm hat die Funktion, Bilder nach Pixelgröße / Auflösung / Abmessungen zu sortieren.
Sehr seltsam, aber dennoch so leistungsfähig. DigiKam hat keine so einfache Funktion.
Irgendwelche Vorschläge?
Ich habe keine Ahnung, wie dies funktioniert, aber ImageMagick hat eine identify
Anwendung, die ich in den letzten zehn Minuten lernen muss. Besser als alles andere hat es ein -format
Argument, wo man rechnen kann!
find -iname '*.jpg' -exec identify -format "%[fx:w*h] %i\n" {} \+ | sort -g
Wenn Sie eine bestimmte Größe überschreiten, erhalten Sie leider eine wissenschaftliche Notation (z. B. 1,2 * 10 ^ 3) anstelle einer Ganzzahl, die von identify zurückgesetzt wird. Zum Glück hat sort ein -g
Argument, das sie auswerten wird.
Bei denselben Dateien dauert diese Version (nicht für Perl) nur 60% der Zeit, die die Perl-Version benötigt. Das heißt nicht, dass Perl langsam ist, aber es ist eine unnötige Komplikation, die die Dinge verlangsamt (glaube ich), in Perl einzusteigen und das Subshelling wieder aufzunehmen.
Meins ist immer noch nicht ideal. Das Sortieren von Zahlen in Ganzzahlen zum Sortieren ist ziemlich langsam. Idealerweise würden Sie dies alles intern in einer Sprache tun, wobei die Größe durchgehend als Ganzzahl bleibt ... Aber das Obige ist der kürzeste und schärfste Einzeiler, den ich machen kann.
sort -g
mit der wissenschaftlichen Notation richtig umgehen? Ich frage, weil(echo 1.45e+06; echo 1.15e+06; echo 1.44e+06; echo 5; echo 2) | sort -g
eine merkwürdige Bestellung zurückgibt (ich habe mit Bash getestet)LC_ALL=C
damit funktioniert es wie erwartet.Wenn Sie nach einem Befehlszeilentool suchen, sortiert der folgende Befehl Bilddateien, bei denen die höchste Auflösung an erster Stelle steht:
Ich sortiere die Dateien im Grunde genommen mit der Sub-Subroutine
perl
sort, wobei der Schlüssel hier darin besteht, denidentify
Befehl aufzurufen und seine formatierte Ausgabe auszuwerten.identify
ist mit demimagemagick
Paket erhältlich:UPDATE :
Der folgende Befehl gibt auch die Auflösung aus:
Beispiel:
quelle
identify.im6: unable to open image ./estrada: No such file or directory @ error/blob.c/OpenBlob/2638. identify.im6: no decode delegate for this image format ./estrada @ error/constitute.c/ReadImage/544.
' Wenn das wichtig ist, enthalten Dateinamen keine Leerzeichen.find
Befehl korrekt verwenden, um nur Bilder zu filtern. Andernfallsidentify
schlägt dieser Fehler fehl. Ich habe es bekommen, als ich es versuchtefind . -iname "*"
find . -iname "*.png" -o -iname "*.jpg" | perl -e '$f=sub{`identify -format %w*%h ${\quotemeta(shift)} 2>/dev/null`};chomp&&print "$_\t".$f->($_)."\n" for sort{eval($f->($b))<=>eval($f->($a))}<>'
Mit
find
,file --mime-type
,identify
,awk
undsort
Mit
file --mime-type
finden wir alle Bilder , auch ohne Erweiterung.Die einzeilige Zeile am Ende dieser Antwort weist ein Problem mit Zeilenumbrüchen im Dateinamen auf. Deshalb hier eine andere Version:
Beispielausgabe
Dies ist die Datei mit dem Zeilenumbruch im Dateinamen:
Vielen Dank an @terdon , @don_crissti und @glennjackman für die Antworten hier .
Alte Version mit einem Problem, wenn der Dateiname Zeilenumbrüche enthält
Beispielausgabe
quelle
Spät zur Party , aber hier ist meine Version mit
find
,exiftool
undsort
:find . -exec exiftool -S -t -q -FileName -ImageSize {} + | sort -k2n,2
Es ist etwas langsam, funktioniert aber. Beispielausgabe:
quelle
Geeqie kann nach Bildgröße sortieren.
quelle
Olis Antwort funktioniert. Hier ist eine Änderung, um das Minimum an Breite und Höhe aufzulisten
quelle