एक फ़ाइल ढूँढें जहाँ नाम एक बड़े अक्षर से शुरू होता है


14

मैं उन सभी फाइलों को खोजने की कोशिश कर रहा हूं जिनके लिए नाम एक बड़े अक्षर से शुरू होता है। मैंने निम्नलिखित कमांड का उपयोग करने की कोशिश की है:

find . -type f -regex '.*\/[A-Z][^/]*'

यह केवल निचले अक्षरों के साथ पथ ढूंढ रहा है। निम्नलिखित कार्य:

find . -type f -regex '.*\/[ABCDEFGHIJKLMNOPQRSTUVWXYZ][^/]*'

जैसा हुआ:

find . -type f | grep '.*\/[A-Z][^/]*$'

मैंने regextypeएक ही परिणाम के लिए सभी विभिन्न विकल्पों की कोशिश की है ।

findमें लोअरकेस अक्षर क्यों शामिल हैं [A-Z]? मुझे लगा कि इसके लिए रेगेक्स था [a-zA-Z]। क्या केवल अपरकेस अक्षरों की श्रेणी निर्दिष्ट करने का कोई तरीका है find?


5
किस बारे में LC_ALL=C find ...?
mikeserv

यह काम करता है। क्या आप बता सकते हैं कि उत्तर में क्यों?
कार्ल बेलेफेल्ट

3
मैं कोशिश कर सकता था, लेकिन तब आप इस पर चूक सकते थे
mikeserv

1
आप स्लैश ( \/) से क्यों बच रहे हैं ? इसके अलावा आप क्या खोज रहे हैं ( find --version)?
बजे क्रिस्टियन सियुपिटु

1
बचना /तभी आवश्यक है जब आप इसे एक सीमांकक के रूप में उपयोग कर रहे हों, जैसे s/foo\/bar/foobar/। (लेकिन अक्सर आप कुछ अन्य सीमांकक का उपयोग कर सकते हैं s#foo/bar#foobar#।)
डेल्टैब

जवाबों:


35

आपको उपयोग करने की आवश्यकता नहीं है -regex। आप -nameइसके बजाय उपयोग कर सकते हैं ।

find . -type f -name "[[:upper:]]*"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.