जवाबों:
यदि आप सभी संभव संयोजन चाहते हैं, तो उपयोग करें:
for i in *.[Pp][Nn][Gg]; do
या
shopt -s nocaseglob
for i in *.png; do
यद्यपि वह आपकी स्क्रिप्ट के सभी शेल ग्लब्स (यानी वाइल्डकार्ड फ़ाइल मैच) केस को असंवेदनशील बना देगा, जब तक आप उसे नहीं चलाते shopt -u nocaseglob
।
यदि आप वास्तव में सिर्फ .PNG और .png चाहते हैं (और, उदाहरण के लिए, .PnG या .pnG), तो या तो।
shopt -s nullglob
for i in *.png *.PNG; do
या
for i in *.png *.PNG; do
[[ -e "$i" ]] || continue
... नलग्लोब या अस्तित्व की जांच का कारण यह है कि यदि आपके पास केवल लोअरकेस या केवल अपरकेस एक्सटेंशन हैं, तो यह फ़ाइलों की सूची में बेजोड़ पैटर्न को शामिल करेगा, जिससे लूप के शरीर में त्रुटि हो सकती है। Nocaseglob के साथ के रूप में, आप बाद में nullglob शेल विकल्प को बंद करना चाह सकते हैं (हालांकि मेरे अनुभव में nullglob अक्सर अच्छा होता है, खासकर एक स्क्रिप्ट में)। वास्तव में, मैं इसके बजाय इस तरह के सभी फ़ाइल मैचों के लिए या तो nocaseglob या अस्तित्व की जांच का उपयोग करने के लिए एक अच्छा विचार मानता हूं, बस अगर कोई मैच न हो।
आप कुछ वन-लाइनर भी आज़मा सकते हैं जैसे कि
खोजो। -नाम "* .पिंग" -exec ...।
या
खोजो। -नाम "* .png" | xargs…।
संपादित करें
@ पुनरावृत्ति के बारे में @ याब की टिप्पणी भी देखें।
find -maxdepth 1 -iname "*.png"
ls
यहाँ लगभग बेकार है लेकिन यहाँ रिकॉर्ड के लिए आपके प्रयास के करीब एक वाक्यविन्यास है:
for i in $(ls *.PNG ; ls *.png)
टिप्पणियाँ:
for i in *.{png,PNG}