สมมติว่าฉันค้นหา.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นี้สำเร็จ