वर्तमान निर्देशिका में पुनरावर्ती स्ट्रिंग के लिए खोजें


15

मैं किसी विशेष स्ट्रिंग के लिए निर्देशिका से पुनरावर्ती सभी फ़ाइलों को खोजना चाहता हूं।

मैंने कोशिश की

grep -r -i my_string

और मैंने इसे दो छोटे फ़ाइलों के साथ एक परीक्षण फ़ोल्डर में आज़माया, लेकिन यह स्ट्रिंग नहीं ढूंढेगा।

इसके अलावा, क्या पूरे शब्द के मिलान के बजाय "समाहित" को परिभाषित करने का कोई विशेष तरीका है?


3
प्रयास करें grep -r -o -i "your_string" *("उद्धरण के साथ)।
pl1nk

मुझे कुछ गड़बड़ियों से इनकार किया जा रहा है, क्या यह सिर्फ उन फाइलों को अनदेखा करता है लेकिन बाकी की जाँच जारी रखता है?
डेविड

सही, इन फ़ाइलों को अनदेखा किया जा रहा है।
pl1nk

जवाबों:


27

क्या आप फ़ाइल नाम या फ़ाइल के अंदर एक शब्द खोज रहे हैं? grep फाइलों के अंदर खोज करता है, जो आपको लगता है कि आप चाहते हैं।

grep नियमित अभिव्यक्ति का उपयोग करता है - वास्तव में, यही "पुनः" भाग है। तो, यह सामान्य बैश वाइल्डकार्ड का उपयोग नहीं करता है; वह है, abc*शब्द नहीं मिलेगा जो abc से शुरू होता है, यह शब्द ab से शुरू होता है, फिर शून्य या अधिक c का अनुसरण करता है। लेकिन हां, अगर आप इसे केवल एक पैटर्न देते हैं, तो यह आपको कहीं भी मिल जाएगा, पूरे शब्दों का ज्ञान नहीं है। यदि आप पूरे शब्द ढूंढना चाहते हैं, तो आपको यह बताने के लिए एक नियमित अभिव्यक्ति बनाने की आवश्यकता होगी।

लेकिन, अधिकांश आदेशों की तरह, आपको कमांड के अंत में फ़ाइलनाम (ओं) को रखने की आवश्यकता है, इसलिए आपका उदाहरण बस वहीं बैठकर फ़ाइल नाम का इंतजार करना होगा।

जैसा कि @plink ने कहा, उपयोग करें

grep -r -o -i "your_string" *

(या *.*, या अन्य फिल्स्पेक)। त्रुटियों को नजरअंदाज किया जा सकता है। यदि आपको बहुत अधिक त्रुटियां हो रही हैं, तो आप 2>/dev/nullअंत तक आवेदन कर सकते हैं , जो एक अशक्त डिवाइस को stderr रीडायरेक्ट करेगा।


6
उन उत्सुक लोगों के लिए: -r का अर्थ है पुनरावर्ती (यानी यह वर्तमान फ़ोल्डर में दिखता है और वर्तमान फ़ोल्डर में सभी फ़ोल्डर और उन फ़ोल्डर में सभी फ़ोल्डर ..... अनंत तक), -o का अर्थ है कि यह पूरी लाइन नहीं दिखाता है, और -आई मामले की अनदेखी कर रहा है।
BKSpurgeon

@johnsnails बैकटिक आवश्यक नहीं है। इनलाइन कोड ब्लॉक के रूप में पोस्ट करते समय स्टैक एक्सचेंज पर प्रारूपण त्रुटि होने की अधिक संभावना है।
tom_mai78101

हाँ जो समझ में आता है।
जॉन्सनल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.