2012-09-10 12 views
6

का पता लगाएं मैं grep कमांड को ढूँढने के आदेशों द्वारा निर्दिष्ट मार्गों में निर्दिष्ट फ़ाइलों में कुछ शब्दों का पता कैसे लगा सकता हूं?कमांड grep का उपयोग करें और

locate my.cnf | grep user 

(मुझे लगता है कि ग्रेप चाहते आदेश फाइलों आदेश का पता लगाने के लिए मिला पर शब्द "उपयोगकर्ता" खोज)

उत्तर

10
एक पाइप, उपयोग आदेश प्रतिस्थापन के बजाय

:

grep user `locate my.cnf` 
+0

मुझे इसे 'xargs' दृष्टिकोण से बेहतर पसंद है क्योंकि यह grep के हाइलाइटिंग –

+0

@moeso को बनाए रखता है: आप हमेशा' --color = always' के साथ रंग आउटपुट देने के लिए grep प्राप्त कर सकते हैं। – cha0site

0

शायद grep user $(locate my.cnf) आप जो खोज रहे हैं, अगर मैं आपके सवाल का सही ढंग से समझ है।

+3

ध्यान दें कि यह 'पता' कमांड बहुत अधिक डेटा देता है तो यह क्रैश और जला देगा। कमांड लाइन का आकार अनंत नहीं है। – cha0site

10

प्रयास करें:

locate my.cnf | xargs grep user 
+0

यह विकल्प सही है, लेकिन मैट ने पहले जवाब दिया और यह काम करता है। धन्यवाद। – Jhonathan

+2

@ जोनाथन - यदि परिणाम काफी छोटा है, मैट का काम करता है। यदि परिणाम मनमाने ढंग से बड़ा हो सकता है, तो आपको 'xargs' पसंद करना चाहिए। –

0

आदेश स्थितियों के साथ अच्छा खेलने के लिए पता लगाने जब परिणाम नामों में रिक्तियां है, आप इस

कर सकता है
locate -0 my.cnf | xargs -n1 -0 grep user 
+0

एक ही आउटपुट को दिखाता है तीन बार – Jhonathan

+0

किसी भी स्विच के बिना 'grep' स्वचालित रूप से सभी मिलान लाइनों को आउटपुट करता है (आपकी फ़ाइल में कई लाइनें मिलती हैं)। यदि आप उनके सामने लाइन नंबर दिखाना चाहते हैं तो आप grep के लिए '-n' स्विच का उपयोग कर सकते हैं। अन्यथा, आप इसे '-m 1' के साथ केवल प्रत्येक फ़ाइल के लिए पहला मैच या' -l' के साथ मेल खाने वाली फ़ाइल का नाम केवल आउटपुट कर सकते हैं। –

+0

आपके पास कारण है। माफ़ कीजिये, – Jhonathan

संबंधित मुद्दे