@OP,
क्या ग्लोब पेटर्न न केवल फ़ाइल नामों के लिए उपयोग किया जाता है?
नहीं, "ग्लोब" पैटर्न केवल फ़ाइल नामों के लिए उपयोग नहीं किया जाता है। आप इसे तार के रूप में अच्छी तरह से तुलना करने के लिए उपयोग करते हैं। अपने उदाहरणों में, आप स्ट्रिंग्स पैटर्न देखने के लिए केस / एसैक का उपयोग कर सकते हैं।
gg=svm-grid-ch
case "$gg" in
*grid* ) echo "found";;
esac
case "$gg" in ????grid*) echo "found";; esac
case "$gg" in s???grid*) echo "found";; esac
बैश में, ग्लोब पैटर्न का उपयोग कब करें और नियमित अभिव्यक्ति का उपयोग कब करें? धन्यवाद!
रेगेक्स "ग्लोब पैटर्न" की तुलना में अधिक बहुमुखी और "सुविधाजनक" है, हालांकि जब तक आप जटिल कार्य नहीं कर रहे हैं कि "ग्लोबिंग / एक्सटेंडेड ग्लोबिंग" आसानी से प्रदान नहीं कर सकते हैं, तो रेगेक्स का उपयोग करने की कोई आवश्यकता नहीं है। Regex को bash <3.2 के संस्करण के लिए समर्थित नहीं है (जैसा कि डेनिस उल्लेख किया गया है), लेकिन आप अभी भी विस्तारित ग्लोबिंग (सेटिंग द्वारा extglob) का उपयोग कर सकते हैं । विस्तारित ग्लोबिंग के लिए, यहां देखें और कुछ सरल उदाहरण यहां दिए गए हैं ।
ओपी के लिए अपडेट: 2 वर्णों (डॉट्स) के साथ शुरू होने वाली फ़ाइलों को खोजने के लिए उदाहरण। 1 का मतलब है)
उदा आउटपुट
$ shopt -s dotglob
$ ls -1 *
abg
degree
..g
$ for file in *; do [[ $file =~ "..g" ]] && echo $file ; done
abg
degree
..g
उपरोक्त में, फ़ाइलों का मिलान किया जाता है क्योंकि उनके नाम में 2 अक्षर होते हैं जिसके बाद "g" होता है। (अर्थात..g )।
ग्लोबिंग के साथ समतुल्य कुछ इस तरह होगा: ( अर्थ के संदर्भ में देखें ?और *)
$ for file in ??g*; do echo $file; done
abg
degree
..g