regex क्वांटिफायर के साथ कमांड ढूंढें जैसे {1,2}


14

मैं एक खोज कमांड स्ट्रिंग बनाने की कोशिश कर रहा हूं जो 1-99 नंबर के साथ समाप्त होने वाली सभी फाइलों को ढूंढ लेगी लेकिन अन्य सभी को बाहर नहीं करेगी।

उदाहरण के लिए मैं myfile1 myfile99 ढूंढना चाहता हूं लेकिन myfile456 नहीं और myfilebackup नहीं

रेगेक्स मैं सोच रहा हूं, myfile[1-9]{1,2}लेकिन मैं इसे खोजने के लिए काम नहीं कर सकता।

find . -regex '.*myfile[0-9]{1,2}' या find . -iname 'myfile[0-9]{1,2}'

मैं जो देख सकता हूं, वह वह {1,2}हिस्सा है जो काम नहीं कर रहा है।

(वैसे आप -name -regexइंटरचेंज का उपयोग कर सकते हैं ?)

किसी भी मदद की सराहना की।


1
-iname(और -name) ग्लब्स का उपयोग करें , जिसमें यह सिंटैक्स नहीं है।
l0b0

जवाबों:


10

तुम कोशिश कर सकते हो

find . -regex '.*myfile[0-9][0-9]?'

या

find . \( -name "myfile[0-9][0-9]" -o -name "myfile[0-9]" \)

धन्यवाद - मेरे लिए पहली पंक्ति काम कर रही है। मैंने इस के साथ कोशिश की थी, लेकिन मुझे नहीं लगता कि यह सिंटैक्स का समर्थन करता है या फिर मैं कुछ गलत कर रहा हूं।
लुकासु

17

यदि आपके पास जीएनयू है, तो आप एक अन्य नियमित अभिव्यक्ति प्रकार का उपयोग कर सकते हैं:

find . -regextype sed -regex '.*myfile[0-9]\{1,2\}'

जीएनयू के अनुसार डिफ़ॉल्ट रूप सेfind एक न्यूटर्ड एमएसीएस नियमित अभिव्यक्ति सिंटैक्स का उपयोग करता है - एमएसीएस \{from,to\}सिंटैक्स का समर्थन करता है, लेकिन कम से कम जीएनयू findइसका समर्थन करता है।

अजीब बात है, संदर्भ मैनुअल में sedनियमित अभिव्यक्ति सिंटैक्स पर एक खंड शामिल नहीं है , इसलिए कौन जानता है कि इसके कौन से हिस्से समर्थित हैं।


1
sedजैसे के edलिए एक उपनाम लगता है posix-basic, इसलिए POSIX BRE के साथ संगत होना चाहिए (हालांकि कुछ एक्सटेंशन का समर्थन करता है \+)। यह जीएनयू के साथ संगत नहीं है, sedजहां उदाहरण [\n]के लिए बैकस्लैश के बजाय एक नई रेखा से मेल खाता है या nपोसिक्स द्वारा आवश्यक है। -regextype posix-extendedPOSIX EREs (तो .*myfile[0-9]{1,2}) के लिए भी देखें , जैसे कि एक्सटेंशन के साथ \sया\<
Stéphane Chazelas

मैं -regextype के बारे में कभी नहीं जानता था। ऐसा लगता है कि यदि आप इसका उपयोग करते हैं तो ऐसा लगता है कि आप -regextype egrepबैकस्लैश से बच सकते हैं।
श्रीधर सरनोबत
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.