मैं एक्सटेंशन jpg
या txt
से मेल खाने वाली सभी फ़ाइलों पर लूप करना चाहता हूं। मैं का उपयोग करें:फ़ाइल नाम ग्लोब के पास कोई मिलान नहीं होने पर कुछ भी मिलान कैसे करें
for file in myDir/*.{jpg,txt}
do
echo "$file"
done
समस्या: निर्देशिका सभी में कोई jpg फ़ाइल हैं, पाश उत्पादन myDir/*.jpg
के साथ एक यात्रा करना होगा। मैं *
को एक मनमानी फ़ाइल द्वारा प्रतिस्थापित किया जाएगा (और यदि कोई फ़ाइल मौजूद नहीं है तो इसे विस्तारित नहीं किया जा सकता है)। मैं अवांछित पुनरावृत्ति से कैसे बच सकता हूं?
shopt -s nullglob
से man bash
: इस अवांछित यात्रा से बचने के लिए
एक पैटर्न कोई मेल नहीं है, तो डिफ़ॉल्ट/POSIX व्यवहार बल्कि अनदेखी या पैटर्न को हटाने की तुलना में एक शाब्दिक स्ट्रिंग के रूप में पैटर्न के इलाज के लिए, है। – chepner
प्रश्न से संबंधित नहीं है, लेकिन ध्यान दें कि ब्रेसिज़ पैटर्न का हिस्सा नहीं हैं। वे संबंधित स्ट्रिंग्स का एक सेट उत्पन्न करने के लिए 'bash' shorthand हैं, और जैसे पैटर्न मिलान शुरू होने से पहले स्ट्रिंग' myDir/*। Jpg myDir/*। Txt' में विस्तारित होते हैं। – chepner