Знайдіть усі анімовані файли gif у каталозі та його підкаталогах


12

скажімо, що я знайшов .gifфайли і отримав купу файлів назад. Зараз я хочу перевірити їх, щоб побачити, чи вони анімовані gif-файли. Чи можу я це зробити за допомогою командного рядка?

Я завантажив кілька прикладів у наступному випадку, якщо ви хочете експериментувати над ними.

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

анімоване зображення gif

Статичне зображення GIF

статичне зображення gif

Відповіді:


22

Це легко зробити за допомогою ImageMagick

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

12 animated.gif
1 non_animated.gif

identify -format %nдрукує кількість кадрів у gif; для анімованих gif-файлів ця кількість більша за 1.

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


Ідеально, дякую - у мене вже встановлений 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був успішним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.