Encontre todos os arquivos gif animados em um diretório e seus subdiretórios

12

digamos que eu fiz uma busca por .gifarquivos e recuperei vários arquivos. Agora, quero testá-los para ver se são gifs animados . Posso fazer isso através da linha de comando?

Fiz upload de alguns exemplos a seguir, caso você queira experimentar neles.

Imagem GIF animada

imagem gif animada

Imagem GIF estática

imagem estática gif

Max Williams
fonte

Respostas:

22

Isso pode ser feito facilmente usando o ImageMagick

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

12 animated.gif
1 non_animated.gif

identify -format %nimprime o número de quadros no gif; para gifs animados, esse número é maior que 1.

(O ImageMagick provavelmente está disponível nos repositórios da sua distribuição para facilitar a instalação)

Walther
fonte
Perfeito, obrigado - eu já tenho o ImageMagick instalado.
Max Williams
9

Usando exiftool:

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

Relataria os caminhos dos arquivos GIF que possuem mais de um quadro (no diretório atual, recursivamente).

Stéphane Chazelas
fonte
5

Outra maneira de imusar o fxoperador:

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

Ele procura no diretório atual e seus subdiretórios por .gifimagens executando esse comando shell para cada um .gifencontrado. Se o número de quadros n>1, em seguida, fximprime 1, caso contrário, ele imprime 0. Isso é canalizado para grep -q 1que -printsomente seja executado se o anterior tiver -execsido bem-sucedido.

don_crissti
fonte