2013-10-16 13 views
133

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

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

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

उत्तर

214

find की कोई आवश्यकता नहीं है। तुम सिर्फ एक विशिष्ट निर्देशिका के अंतर्गत पैटर्न को देख रहे हैं, यह पर्याप्त होना चाहिए:

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

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

-h, - नो-फाइलनाम

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

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

-एच, --with-फ़ाइल नाम

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

5

नहीं वास्तव में है कि कठोर आदमी पेज में देखने के लिए के लिए खोज, है न?

-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. 
+23

उत्तर के लिए धन्यवाद, लेकिन और भी आसान StackOverflow जाँच करने के लिए :) – chessofnerd

+3

आश्चर्य क्यों गूगल जैसे वे विशेष मामले के बाकी सब नहीं विशेष मामला manpages करता है। – Gordon

+13

@ टीसी 1 मैन पेज सामान्य रूप से कार्य के बजाय स्विच द्वारा व्यवस्थित होते हैं। हर संभव स्विच के माध्यम से पढ़ना मुश्किल है। अनावश्यक सास के लिए – mikemaccana

6

-H-h के साथ बस -H को प्रतिस्थापित करें। विकल्पों पर अधिक जानकारी के लिए man grep चेक

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