สมมติว่าฉันค้นหา.gif
ไฟล์เสร็จแล้วและได้ไฟล์กลับมามากมาย ตอนนี้ผมต้องการที่จะทดสอบพวกเขาเพื่อดูว่าพวกเขามีความเคลื่อนไหว GIFs ฉันสามารถทำได้ผ่านบรรทัดคำสั่งหรือไม่
ฉันได้อัปโหลดตัวอย่างสองสามตัวอย่างต่อไปนี้ในกรณีที่คุณต้องการทดลองใช้
สมมติว่าฉันค้นหา.gif
ไฟล์เสร็จแล้วและได้ไฟล์กลับมามากมาย ตอนนี้ผมต้องการที่จะทดสอบพวกเขาเพื่อดูว่าพวกเขามีความเคลื่อนไหว GIFs ฉันสามารถทำได้ผ่านบรรทัดคำสั่งหรือไม่
ฉันได้อัปโหลดตัวอย่างสองสามตัวอย่างต่อไปนี้ในกรณีที่คุณต้องการทดลองใช้
คำตอบ:
สามารถทำได้อย่างง่ายดายโดยใช้ImageMagick
identify -format '%n %i\n' -- *.gif
12 animated.gif
1 non_animated.gif
identify -format %n
พิมพ์จำนวนเฟรมใน gif; สำหรับ gif แบบเคลื่อนไหวจำนวนนี้จะมากกว่า 1
(ImageMagick นั้นมีอยู่ในที่เก็บของ distro ของคุณเพื่อให้ติดตั้งได้ง่าย)
การใช้exiftool
:
exiftool -q -if '$framecount > 1' -p '$directory/$filename' -r -ext:gif .
จะรายงานเส้นทางของไฟล์ GIF ที่มีมากกว่าหนึ่งเฟรม (ในไดเรกทอรีปัจจุบันซ้ำ)
อีกวิธีด้วยการ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
นี้สำเร็จ