मैं उन पंक्तियों की खोज करने की कोशिश करता हूं जो "1" का उपयोग करके शुरू होती हैं
ls -1 | grep ^1*
लेकिन यह उन लाइनों को लौटाता है जो 1 से शुरू नहीं होती हैं। मैं यहां क्या याद कर रहा हूं?
मैं उन पंक्तियों की खोज करने की कोशिश करता हूं जो "1" का उपयोग करके शुरू होती हैं
ls -1 | grep ^1*
लेकिन यह उन लाइनों को लौटाता है जो 1 से शुरू नहीं होती हैं। मैं यहां क्या याद कर रहा हूं?
जवाबों:
यद्यपि यह आपके प्रश्न का उत्तर नहीं देता है, लेकिन यह एक बेहतर समाधान है जो आपके लक्ष्य के लिए प्रकट होता है:
ls -ld 1*
आप उन सभी फ़ाइलों को सूचीबद्ध करने के लिए एक शेल ग्लोब का उपयोग कर सकते हैं जो इसके साथ शुरू होती हैं 1
। ध्यान दें कि *
नियमित अभिव्यक्तियों की तुलना में शेल ग्लोबिंग में एक अलग अर्थ है।
^ 1. * पूरी लाइन से मेल खाता है, या जैसा कि ऊपर कहा गया है, ^ 1 लाइन में निहित स्ट्रिंग मिला।
रेगेक्स की विभिन्न शैलियों में चार्लों का प्रतिनिधित्व करने वाले विभिन्न प्रतीकों का उपयोग किया जाता है, कुछ विकल्प निर्दिष्ट करते हैं कि आपको कौन सी शैली चाहिए। और अलग-अलग विकल्प निर्दिष्ट करते हैं कि क्या आप पूरी लाइन से मेल खाना चाहते हैं, या बस इसका एक हिस्सा, या पूरे इनपुट को एक स्ट्रिंग के रूप में।
ls
आउटपुट को सीमित करने के लिए grep का उपयोग करना चाहते हैं , तो आप समस्याओं में चले जाएंगे यदि फ़ाइलनाम में कुछ अजीब अक्षर होते हैं, जैसे कि newlines ... कई अन्य कमांड (किसी तरह नहींls
, कम से कम संस्करण नहीं जिसे मुझे जांचना है) शून्य से अलग आउटपुट देने का विकल्प है, जिसे आप तब सुरक्षित रूप से प्रोसेस कर सकते हैंgrep -z