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

12

Digamos que eu fiz um achado para .gif arquivos e tenho um monte de arquivos de volta. Agora quero testá-los para ver se eles são animados gifs. Posso fazer isso através da linha de comando?

Eu fiz upload de alguns exemplos a seguir, caso você queira fazer experiências neles.

Imagem GIF animada

ImagemGIFestática

    
por Max Williams 21.08.2015 / 12:39

3 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 %n imprime o número de quadros no gif; para gifs animados, esse número é maior que 1.

(ImageMagick provavelmente está prontamente disponível nos repositórios da sua distro para uma instalação fácil)

    
por 21.08.2015 / 13:02
9

Usando exiftool :

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

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

    
por 21.08.2015 / 13:40
4

Outra forma com im usando o operador fx :

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

Isso pesquisa o diretório atual e seus subdiretórios para .gif images executando o comando shell para cada .gif encontrado. Se o número de quadros n>1 , em seguida, fx imprime 1 , caso contrário, imprime 0 . Isso é canalizado para grep -q 1 , então -print só é executado se o -exec anterior foi bem-sucedido.

    
por 21.08.2015 / 13:58

Tags