Найти все анимированные GIF-файлы в каталоге и его подкаталогах

12

допустим, я сделал поиск .gifфайлов и получил кучу файлов обратно. Теперь я хочу проверить их, чтобы увидеть, являются ли они анимированными гифками. Могу ли я сделать это через командную строку?

Ниже выложено несколько примеров на случай, если вы захотите поэкспериментировать с ними.

Анимированное GIF изображение

анимированное изображение GIF

Статическое GIF-изображение

статическое изображение GIF

Макс Уильямс
источник

Ответы:

22

Это легко сделать с помощью ImageMagick

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

12 animated.gif
1 non_animated.gif

identify -format %nпечатает количество кадров в gif; для анимационных картинок это число больше 1.

(ImageMagick, вероятно, легко доступен в репозиториях вашего дистрибутива для легкой установки)

Walther
источник
Отлично, спасибо - у меня уже установлен ImageMagick.
Макс Уильямс
9

Использование exiftool:

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

Будет сообщать пути файлов GIF, которые имеют более одного кадра (в текущем каталоге, рекурсивно).

Стефан Шазелас
источник
5

Еще один способ imиспользования fxоператора:

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

При этом выполняется поиск в текущем каталоге и его подкаталогах .gifизображений, запускающих эту команду оболочки для каждого .gifнайденного. Если количество кадров, n>1то fxпечатает 1, в противном случае он печатает 0. Это передается по каналу, grep -q 1поэтому -printвыполняется, только если предыдущий -execбыл успешным

don_crissti
источник