पथ / फ़ाइल दिखाए बिना grep: पंक्ति


234

आप कैसे grep करते हैं और केवल मिलान रेखा वापस करते हैं? अर्थात परिणामों से पथ / फ़ाइल नाम छोड़ा गया है।

इस मामले में मैं वर्तमान निर्देशिका में सभी .bar फ़ाइलों को देखना चाहता हूं, FOO शब्द की खोज कर रहा हूं

find . -name '*.bar' -exec grep -Hn FOO {} \;

जवाबों:


375

कोई जरूरत नहीं है find। यदि आप किसी विशिष्ट निर्देशिका के भीतर एक पैटर्न की तलाश कर रहे हैं, तो यह पर्याप्त होना चाहिए:

grep -hn FOO /your/path/*.bar

-hफ़ाइल नाम को छिपाने के लिए पैरामीटर कहाँ से है man grep:

-ह, --नो-फाइलन

आउटपुट पर फ़ाइल नामों के प्रीफ़िक्सिंग को दबाएं। यह डिफ़ॉल्ट है जब खोज करने के लिए केवल एक फ़ाइल (या केवल मानक इनपुट) है।

ध्यान दें कि आप उपयोग कर रहे थे

-एच,

प्रत्येक मैच के लिए फ़ाइल का नाम प्रिंट करें। यह डिफ़ॉल्ट है जब खोज करने के लिए एक से अधिक फ़ाइल है।


क्या लाइन नंबर को छोड़ा जा सकता है?
जावदबा

@javadba आप शायद एक उपनाम, प्रकार का उपयोग कर रहे हैं alias grep। उपनाम को छोड़ने के लिए, टाइप करें\grep ...
फेडोरक्वी 'SO रोकना नुकसान पहुंचाता है'

1
हाँ यह उपनाम का उपयोग कर रहा था।
जावदबा

8

बस के -Hसाथ बदलें -hman grepविकल्पों पर अधिक जानकारी के लिए जाँच करें

find . -name '*.bar' -exec grep -hn FOO {} \;

6

मैन पेज से:

-h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there
    is only one file (or only standard input) to search.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.