मैं कीवर्ड grep खोज के बाद केवल फ़ाइल नाम कैसे दिखाऊँ?


15

वर्तमान में मेरे पास एक निर्देशिका में n डेटा फ़ाइलें हैं जहां प्रत्येक फ़ाइल में बहुत लंबे डेटा की अधिकतम 1 पंक्ति है। मेरी निर्देशिका संरचना है

director/
    data1.json
    data2.json
    data3.json

मुझे पता है कि उन फ़ाइलों में से कम से कम एक कीवर्ड है जिसमें मैं खोज रहा हूं, लेकिन चूंकि डेटा की एक पंक्ति बहुत लंबी है, इसलिए यह मेरे पूरे टर्मिनल को कवर करता है। कीवर्ड grep करने के बाद ही मुझे फ़ाइल नाम कैसे मिलेगा? Grep कमांड मैं उपयोग कर रहा हूं:

grep keyword *.json

जवाबों:


30

-L तर्क वही करना चाहिए जो आप चाहते हैं।

   -l, --files-with-matches
          Suppress  normal  output;  instead  print the name of each input
          file from which output would normally have  been  printed.   The
          scanning  will  stop  on  the  first match.  (-l is specified by
          POSIX.)

7

आप xargs को grep या --print0 के साथ ack के साथ संयोजन में उपयोग कर सकते हैं। मुझे लगता है कि ack गति तेज है।

grep -lr --null searchterm * | xargs -I {} -0 echo {}

ack -lr --print0 searchterm * | xargs -I {} -0 echo {}

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