वैसे, ऐसा करने का सबसे आसान तरीका ImageMagick का उपयोग करना होगा । यह आपके लिनक्स वितरण की रिपॉजिटरी में होना चाहिए, डेबियन आधारित सिस्टम के लिए, रन:
sudo apt-get install imagemagick
ImageMagick सूट के कार्यक्रमों में से एक है identify
, यह इनपुट छवि फ़ाइलों की एक सूची की विशेषताओं को प्रिंट करेगा। इसके साथ संयोजन करने से sort
आपको आकार के आधार पर छांटे गए चित्रों की एक सूची मिल जाएगी (आपके पास जो भी एक्सटेंशन है उसके लिए आप पीएनजी बदल सकते हैं:
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 कमांड 3rd फ़ील्ड (छवि आकार जिसका प्रारूप 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
कमांड चलाते हैं , और फिर थोड़ा-बहुत पेरोल स्क्रिप्ट के माध्यम से इसके आउटपुट को पाइप करते हैं। नियमित अभिव्यक्ति तीन बड़े अक्षरों ( [A-Z]{3}
) के लिए दिखती है जो छवि प्रारूप होना चाहिए। एक बार जब हमने पाया है कि, छवि नाम और आयामों की पहचान करना आसान है।
मैं यहां gawk का उपयोग नहीं कर रहा हूं क्योंकि इनपुट फ़ाइल नामों में रिक्त स्थान की उपस्थिति फ़ील्ड संख्याओं को भ्रमित करेगी। अंत में, स्क्रिप्ट छवि का नाम और लंबाई / ऊंचाई विभाजन का परिणाम प्रिंट करेगी जो हम 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
इस तरह की छँटाई का समर्थन नहीं करता है।