Finde alle animierten GIF-Dateien in einem Verzeichnis und seinen Unterverzeichnissen


12

Nehmen wir an, ich habe nach .gifDateien gesucht und ein paar Dateien zurückbekommen. Ich möchte sie jetzt testen, um zu sehen, ob es sich um animierte Gifs handelt. Kann ich das über die Kommandozeile machen?

Ich habe im Folgenden einige Beispiele hochgeladen, falls Sie damit experimentieren möchten.

Animiertes GIF-Bild

animiertes gif bild

Statisches GIF-Bild

statisches gif bild

Antworten:


22

Dies ist mit ImageMagick problemlos möglich

identify -format '%n %i\n' -- *.gif

12 animated.gif
1 non_animated.gif

identify -format %ndruckt die Anzahl der Bilder im GIF; Bei animierten Gifs ist diese Zahl größer als 1.

(ImageMagick ist wahrscheinlich für eine einfache Installation in den Repositorys Ihrer Distribution verfügbar.)


Perfekt, danke - ich habe ImageMagick bereits installiert.
Max Williams

9

Verwenden von exiftool:

exiftool -q -if '$framecount > 1' -p '$directory/$filename' -r -ext:gif .

Würde die Pfade der GIF-Dateien melden, die mehr als einen Frame haben (im aktuellen Verzeichnis, rekursiv).


5

Ein anderer Weg mit imdem fxOperator:

find . -type f -name \*.gif -exec sh -c \
'identify -format "%[fx:n>1]\n" "$0" | grep -q 1' {} \; -print

Dadurch werden das aktuelle Verzeichnis und seine Unterverzeichnisse nach .gifBildern durchsucht , in denen dieser Shell-Befehl für jedes .gifgefundene ausgeführt wird. Wenn die Anzahl der Bilder n>1dann fxgedruckt wird 1, wird andernfalls gedruckt 0. Dies wird zum Ausleiten grep -q 1so -printwird nur ausgeführt , wenn der vorherige -execerfolgreich war.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.