Znajdź wszystkie animowane pliki gif w katalogu i jego podkatalogach

12

powiedzmy, że udało mi się znaleźć .gifpliki i odzyskałem kilka plików. Chcę je teraz przetestować, aby zobaczyć, czy są to animowane gify. Czy mogę to zrobić za pomocą wiersza poleceń?

Przesłałem kilka przykładów poniżej, na wypadek, gdybyś chciał z nimi eksperymentować.

Animowany obraz GIF

animowany obraz gif

Statyczny obraz GIF

statyczny obraz gif

Max Williams
źródło

Odpowiedzi:

22

Można to łatwo zrobić za pomocą ImageMagick

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

12 animated.gif
1 non_animated.gif

identify -format %nwypisuje liczbę ramek w gif; w przypadku animowanych gifów liczba ta jest większa niż 1.

(ImageMagick jest prawdopodobnie łatwo dostępny w repozytoriach twojej dystrybucji dla łatwej instalacji)

Walther
źródło
Idealnie, dziękuję - mam już zainstalowany ImageMagick.
Max Williams,
9

Używanie exiftool:

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

Zgłaszałby ścieżki plików GIF, które mają więcej niż jedną ramkę (rekursywnie w bieżącym katalogu).

Stéphane Chazelas
źródło
5

Inny sposób imkorzystania z fxoperatora:

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

Przeszukuje bieżący katalog i jego podkatalogi w poszukiwaniu .gifobrazów uruchamiających to polecenie powłoki dla każdego .gifznalezionego. Jeśli liczba klatek n>1następnie fxdrukuje 1, drukuje inaczej 0. To jest przesyłane potokowo, grep -q 1więc -printjest wykonywane tylko wtedy, gdy poprzednie -execzakończyło się pomyślnie.

don_crissti
źródło