Trova tutti i file gif animati in una directory e nelle sue sottodirectory


12

diciamo che ho fatto una ricerca di .giffile e ho recuperato un sacco di file. Ora voglio metterli alla prova per vedere se sono gif animate . Posso farlo tramite la riga di comando?

Ho caricato un paio di esempi di seguito, nel caso tu voglia sperimentarli.

Immagine GIF animata

immagine gif animata

Immagine GIF statica

immagine gif statica

Risposte:


22

Questo può essere fatto facilmente usando ImageMagick

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

12 animated.gif
1 non_animated.gif

identify -format %nstampa il numero di fotogrammi nella gif; per le gif animate, questo numero è maggiore di 1.

(ImageMagick è probabilmente facilmente disponibile nei repository della tua distribuzione per una facile installazione)


Perfetto, grazie - ho già installato ImageMagick.
Max Williams,

9

Utilizzando exiftool:

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

Riporterebbe i percorsi dei file GIF che hanno più di un frame (nella directory corrente, ricorsivamente).


5

Un altro modo con l' imutilizzo fxdell'operatore:

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

Questo cerca nella directory corrente e nelle sue sottodirectory le .gifimmagini che eseguono quel comando shell per ciascuna .giftrovata. Se n>1viene fxstampato il numero di fotogrammi 1, altrimenti viene stampato 0. Viene eseguito il piping, grep -q 1quindi -printviene eseguito solo se il precedente ha -execavuto esito positivo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.