ढूंढें मुझे find
कमांड के रेगेक्स का उपयोग करने में समस्या हो रही है। शायद कुछ मैं कमांड लाइन से बचने के बारे में नहीं समझता।लिनक्स रेगेक्स
ये समान क्यों नहीं हैं?
find -regex '.*[1234567890]'
find -regex '.*[[:digit:]]'
बैश, उबंटू
ढूंढें मुझे find
कमांड के रेगेक्स का उपयोग करने में समस्या हो रही है। शायद कुछ मैं कमांड लाइन से बचने के बारे में नहीं समझता।लिनक्स रेगेक्स
ये समान क्यों नहीं हैं?
find -regex '.*[1234567890]'
find -regex '.*[[:digit:]]'
बैश, उबंटू
रेगुलर एक्सप्रेशन find
द्वारा इस्तेमाल किया डिफ़ॉल्ट नियमित अभिव्यक्ति वाक्य रचना में समर्थित नहीं हैं। उन्हें उपयोग करने के लिए आपको posix-extended
जैसे एक अलग रेगेक्स प्रकार को निर्दिष्ट करने की आवश्यकता है।
जीएनयू ढूंढें नियमित अभिव्यक्ति documentation पर एक नज़र डालें जो आपको सभी रेगेक्स प्रकारों और वे क्या समर्थन देते हैं।
धन्यवाद। वह दस्तावेज वह है जिसे मैं ढूंढना चाहता था। मुझे बस इतना मिल सकता था कि http://www.gnu.org/software/emacs/manual/html_node/elisp/Char-Classes.html#Char-Classes - जो यह सुझाव देता था कि चरित्र वर्ग * * emacs regex में समर्थित थे मोड "। – Dijkstra
यह भी जांचें [Regular_expression # Character_classes] (http://en.wikipedia.org/wiki/Regular_expression#Character_classes) - बहुत उपयोगी संसाधन – asoundmove
आप find
की -regextype
तर्क पर एक नजर है चाहिए, manpage देखें:
-regextype type
Changes the regular expression syntax understood by -regex and -iregex
tests which occur later on the command line. Currently-implemented
types are emacs (this is the default), posix-awk, posix-basic,
posix-egrep and posix-extended.
मुझे लगता है कि emacs
प्रकार [[:digit:]]
निर्माण का समर्थन नहीं करता। मैं posix-extended
के साथ की कोशिश की और यह उम्मीद के रूप में काम:
find -regextype posix-extended -regex '.*[1234567890]'
find -regextype posix-extended -regex '.*[[:digit:]]'
मैंने सोचा कि यह हो सकता है, लेकिन मैंने emacs regex परिभाषाओं की जांच की और वे [: digit:] का समर्थन करने लगते हैं। http://www.gnu.org/software/emacs/manual/html_node/elisp/Char-Classes.html#Char-Classes – Dijkstra
ठीक है, तो आप इस '.*[0-9]'
यह उनके प्रश्न का उत्तर नहीं है; आप बस अपने regex को फिर से लिखना ... –
ध्यान दें कि -regex
पूरे रास्ते पर निर्भर करता है की कोशिश कर सकते हैं।
-regex pattern
File name matches regular expression pattern.
This is a match on the whole path, not a search.
आप वास्तव में आप क्या कर रहे हैं के लिए -regex
उपयोग करने के लिए नहीं है। चरित्र वर्गों (जैसे [[:digit:]]
) के साथ
find . -iname "*[0-9]"
excplicit डॉट भी यहां unneeded है;) –
आपको यह इंगित करने के लिए क्या आउटपुट है कि वे नहीं हैं? – shellter