
Wie erhalte ich mit ImageMagick Bilddetails aus allen Ordnern und Unterordnern in diesem Format?
file-name file-location file-format size width height
PS - Ich habe diese Seite gelesenhttp://www.imagemagick.org/script/escape.phpkann aber nicht herausfinden, wie man den Dateispeicherortpfad erhält und wie man Dateien in Unterordner einschließt.
Antwort1
Ich bin ziemlich sicher, dass ImageMagick nicht von selbst so rekursiv funktioniert. Sie müssen ein Skript/Programm darum herum schreiben, um Ihre Verzeichnisstruktur zu durcharbeiten und es einmal pro Datei aufzurufen, die Sie überprüfen möchten.
Antwort2
Der folgende Befehl gibt die gesuchten Informationen zurück:
identify -format "%f %d %m %b %w %h\n" ./* ./*/*
- Die Escape-Sequenz für das Dateiverzeichnis ist
%d
. - Um alle Dateien im aktuellen Ordner einzuschließen, verwenden Sie
./*
(das Shell-Platzhalterzeichen). - Um alle Dateien in allen Unterordnern einzuschließen, verwenden Sie
./*/*
(Shell-Platzhalter).
(Sie haben nicht angegeben, welches Betriebssystem Sie verwenden. Das Obige funktioniert für Linux, Unix und Mac OS X. Verwenden Sie unter Windows .\*.*
und .\*.*\*.*
als Platzhalter.)
Aufmerksamkeit!Wenn Sie in Ihren Ordnern keine Bilddateien oder PDF-Dokumente haben, kann die Ausführung dieses Befehls ziemlich lange dauern. Bei Nicht-Bilddateien wird eine Fehlermeldung wie
identify: no decode delegate for this image format `EXE' @ error/constitute.c/ReadImage/501.
Dies kann vermieden werden, indem alle Fehlermeldungen an umgeleitet werden /dev/null
.
Daher ist es möglicherweise besser, diese Variante zu verwenden:
identify \
-format "%f %d %m %b %w %h\n" \
*.{jpg,jpeg,JPG,png,tif,tiff,ppm,gif} \
*/*.{jpg,JPG,jpeg,png,tif,tiff,ppm,gif} \
2>/dev/null
Hier ist ein Beispiel von Mac OS X:
delta.jpg #12649876 JPEG 17441B 307 205 CMYK_Separation_–_maximales_Schwarz.jpg #21270389 JPEG 1453360B 1600 4780 HFnCz.jpg #21270389 JPEG 356748B 1600 1195 kombiniert.jpg #21270389 JPEG 528221B 1600 1195 res.jpg #26408022 JPEG 57546B 603 300 rot-500x2000.jpg #26951336 JPEG 6288B 500 2000 resized-red-2000x2000.jpg #26951336 JPEG 7430B 1000 1000 big-edge-25.jpg #27290574 JPEG 98916B 1024 288 groß.jpg #27290574 JPEG 19216B 1024 576 double.jpg #27290574 JPEG 35076B 480 270 klein.jpg #27290574 JPEG 20716B 720 404
(Ja, ich habe diesen Befehl in einem Verzeichnis ausgeführt, das Unterverzeichnisse mit den Namen usw. hat #27290574
. #26951336
)
Möglicherweise möchten Sie, dass die Ausgabe eher wie eine Tabelle aussieht. Leiten Sie dazu die Ergebnisse durch column -t
. Versuchen Sie dann Folgendes:
identify \
-format "%f %d %m %b %w %h\n" \
*.{jpg,jpeg,JPG,png,tif,tiff,ppm,gif} \
*/*.{jpg,JPG,jpeg,png,tif,tiff,ppm,gif} \
2>/dev/null | column -t
Ergebnis in meinem Fall:
delta.jpg #12649876 JPEG 17441B 307 205 CMYK_Separation_–_maximales_Schwarz.jpg #21270389 JPEG 1453360B 1600 4780 HFnCz.jpg #21270389 JPEG 356748B 1600 1195 kombiniert.jpg #21270389 JPEG 528221B 1600 1195 res.jpg #26408022 JPEG 57546B 603 300 rot-500x2000.jpg #26951336 JPEG 6288B 500 2000 resized-red-2000x2000.jpg #26951336 JPEG 7430B 1000 1000 big-edge-25.jpg #27290574 JPEG 98916B 1024 288 groß.jpg #27290574 JPEG 19216B 1024 576 double.jpg #27290574 JPEG 35076B 480 270 klein.jpg #27290574 JPEG 20716B 720 404