Encuentra todos los archivos gif animados en un directorio y sus subdirectorios

12

Digamos que hice una búsqueda de .gifarchivos y recuperé un montón de archivos. Ahora quiero probarlos para ver si son gifs animados . ¿Puedo hacer esto a través de la línea de comando?

He subido un par de ejemplos a continuación, en caso de que desee experimentar con ellos.

Imagen GIF animada

imagen animada gif

Imagen GIF estática

imagen estática gif

Max Williams
fuente

Respuestas:

22

Esto se puede hacer fácilmente usando ImageMagick

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

12 animated.gif
1 non_animated.gif

identify -format %nimprime el número de cuadros en el gif; para los gifs animados, este número es mayor que 1.

(ImageMagick probablemente esté fácilmente disponible en los repositorios de su distribución para una fácil instalación)

Walther
fuente
Perfecto, gracias. Ya tengo instalado ImageMagick.
Max Williams
9

Utilizando exiftool:

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

Informaría las rutas de los archivos GIF que tienen más de un marco (en el directorio actual, de forma recursiva).

Stéphane Chazelas
fuente
5

Otra forma de imusar el fxoperador:

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

Esto busca en el directorio actual y sus subdirectorios las .gifimágenes que ejecutan ese comando de shell para cada una .gifencontrada. Si n>1se fximprime el número de fotogramas 1, de lo contrario se imprime 0. Esto se canaliza a grep -q 1modo -printque solo se ejecuta si el anterior -execfue exitoso.

don_crissti
fuente