ด้วยวิธีที่ง่ายที่สุดในการทำเช่นนี้จะใช้ImageMagick มันควรจะอยู่ในที่เก็บของการกระจาย Linux ของคุณสำหรับระบบที่ใช้เดเบียนให้รัน:
sudo apt-get install imagemagick
หนึ่งในโปรแกรมของชุด ImageMagick คือidentify
นี่จะพิมพ์คุณสมบัติของรายการไฟล์ภาพเข้า การรวมเข้ากับsort
จะให้รายการรูปภาพที่เรียงตามขนาด (คุณสามารถเปลี่ยน png สำหรับนามสกุลที่คุณมี:
identify *png | sort -gk 3
หากคุณต้องการอัตราส่วนจริงและไม่ใช่แค่ขนาดลองสิ่งนี้:
ตัวเลือกที่ง่ายสมมติว่าชื่อภาพของคุณไม่มีช่องว่าง :
identify *png *jpg *gif | \
gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' | \
sed 's/\[.\]//' | sort -gk 3
คำสั่ง gawk แยกฟิลด์ที่ 3 (ขนาดรูปภาพที่มีรูปแบบ LxH) ลงในอาร์เรย์ "ขนาด" แล้วพิมพ์ฟิลด์ที่ 1 (ชื่อรูปภาพ) และผลลัพธ์ของการหารความยาวของรูปภาพตามความสูงของมัน sed
คำสั่งเป็นเพียงความงามที่ส่งออกและsort
คำสั่งเรียงลำดับผลตามอัตราส่วนขนาดของภาพ
ซับซ้อนมากขึ้นอันนี้สามารถจัดการกับช่องว่างในชื่อไฟล์:
find . \( -iname "*png" -o -iname "*jpg" -o -iname "*gif" \) -exec identify {} \; |\
perl -ne '/(.+?)\s+[A-Z]{3}\s+(\d+)x(\d+)/; print "$1 ", $2/$3, "\n"' | \
sort -gk 2
ที่นี่เราใช้find
เพื่อระบุไฟล์ที่เราสนใจและรันidentify
คำสั่งจากนั้นไพพ์เอาต์พุตของมันผ่านสคริปต์ PERL เล็กน้อย นิพจน์ทั่วไปค้นหาอักษรตัวใหญ่สามตัว ( [A-Z]{3}
) ซึ่งควรเป็นรูปแบบภาพ เมื่อเราพบว่ามันเป็นเรื่องง่ายที่จะระบุชื่อภาพและขนาด
ฉันไม่ได้ใช้เพ่งพิศที่นี่เพราะการปรากฏตัวของช่องว่างในชื่อไฟล์อินพุตจะสับสนหมายเลขฟิลด์ ในที่สุดสคริปต์จะพิมพ์ชื่อของภาพและผลลัพธ์ของการแบ่งความยาว / ความสูงที่เราsort
เป็นตัวเลข
หากการเรียกดูอัตราส่วนภาพที่มีอยู่ไม่เพียงพอหากคุณมีภาพอย่างน้อยหนึ่งภาพที่มีอัตราส่วนภาพที่ต้องการเพียงใช้ grep เพื่อแยกภาพเหล่านั้นซึ่งมีอัตราส่วนใกล้เคียงที่สุด:
identify *png *jpg *gif | \
gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' |\
sed 's/\[.\]//' | sort -gk 3 | grep -C 10 GOOD_IMAGE.jpg
identify -format "%[fx:w/h]:%M\n" *.jpg
เช่น ฉันไม่ทราบวิธีการเรียงลำดับความใกล้เคียงกับค่าโดยพลการได้อย่างง่ายดายsort
ดูเหมือนจะไม่สนับสนุนการเรียงลำดับดังกล่าว