Temukan semua file gif animasi dalam direktori dan subdirektori

12

katakanlah bahwa saya telah melakukan pencarian untuk .giffile dan mendapat banyak file kembali. Saya sekarang ingin menguji mereka untuk melihat apakah mereka gif animasi . Bisakah saya melakukan ini melalui baris perintah?

Saya telah mengunggah beberapa contoh berikut ini, jika Anda ingin bereksperimen.

Gambar GIF animasi

gambar animasi gif

Gambar GIF statis

gambar gif statis

Max Williams
sumber

Jawaban:

22

Ini dapat dengan mudah dilakukan menggunakan ImageMagick

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

12 animated.gif
1 non_animated.gif

identify -format %nmencetak jumlah bingkai di gif; untuk gif animasi, jumlah ini lebih besar dari 1.

(ImageMagick mungkin sudah tersedia di repo distro Anda untuk pemasangan yang mudah)

Walther
sumber
Sempurna, terima kasih - saya sudah menginstal ImageMagick.
Max Williams
9

Menggunakan exiftool:

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

Akan melaporkan jalur file GIF yang memiliki lebih dari satu frame (dalam direktori saat ini, secara rekursif).

Stéphane Chazelas
sumber
5

Cara lain dengan immenggunakan fxoperator:

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

Ini mencari direktori saat ini dan subdirektori untuk .gifgambar yang menjalankan perintah shell untuk setiap yang .gifditemukan. Jika jumlah bingkai n>1kemudian fxdicetak 1, jika tidak maka akan dicetak 0. Ini disalurkan ke grep -q 1sehingga -printhanya dieksekusi jika sebelumnya -execberhasil.

don_crissti
sumber