Trouver tous les fichiers gif animés dans un répertoire et ses sous-répertoires

12

disons que j'ai fait une recherche de .giffichiers et récupéré un tas de fichiers. Je veux maintenant les tester pour voir s'ils sont des gifs animés. Puis-je le faire via la ligne de commande?

J'ai téléchargé quelques exemples ci-dessous, au cas où vous souhaiteriez les expérimenter.

Image GIF animée

image gif animée

Image GIF statique

image gif statique

Max Williams
la source

Réponses:

22

Cela peut facilement être fait en utilisant ImageMagick

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

12 animated.gif
1 non_animated.gif

identify -format %nimprime le nombre d'images dans le gif; pour les gifs animés, ce nombre est supérieur à 1.

(ImageMagick est probablement facilement disponible dans les référentiels de votre distribution pour une installation facile)

Walther
la source
Parfait, merci - j'ai déjà installé ImageMagick.
Max Williams
9

En utilisant exiftool:

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

Rapporterait les chemins des fichiers GIF qui ont plus d'une trame (dans le répertoire courant, récursivement).

Stéphane Chazelas
la source
5

Une autre façon d' imutiliser l' fxopérateur:

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

Cela recherche dans le répertoire en cours et ses sous-répertoires des .gifimages exécutant cette commande shell pour chacun .giftrouvé. Si le nombre de cadres n>1puis fximprime 1, sinon il imprime 0. Ceci est canalisé vers grep -q 1donc -printest exécutée seulement si la précédente -execa réussi.

don_crissti
la source