2009-02-20 10 views
5

हैलो मैं इस आदेश का उपयोग कर रहा लिनक्स में फ़ाइलों के भीतर पाठ खोजने के लिएलिनक्स में ढूंढकर मेरे टेक्स्ट से मेल खाने वाली रेखा को कैसे मुद्रित करें?

find ./ -type f -exec grep -l "Text To Find" {} \; 

आदेश ठीक काम करता है, लेकिन मैं अपने आप लाइन है कि पाठ शामिल प्रिंट करना चाहते हैं या अगर यह दो पंक्तियों से ऊपर संभव एफआईआर है पाठ के पीछे पाठ और दो पंक्तियां।

इसके अलावा एक और सुझाव पाठ खोजने के लिए और, बजाय लगता है स्वागत कर रहे हैं का उपयोग कर की तर्ज प्रिंट

धन्यवाद एक बहुत पहले से है।

find ./ -type f -exec grep -Hn -A1 -B1 "Text To Find" {} \; 

भी तुम सिर्फ ग्रेप उपयोग कर सकते हैं:

grep -R -Hn -A1 -B1 "Text To Find" * 

उत्तर

14
find ./ -type f -exec grep -Hn "Text To Find" {} \; 

उपयोग -एक और -B झंडे से पहले और मैच के बाद लाइनों मुद्रित करने के लिए?

grep -r -C2 "Text To Find" * 
2

क्यों सिर्फ grep नहीं

+0

क्योंकि '-r' विकल्प पोर्टेबल नहीं है (वास्तव में न तो' -C' है, लेकिन हे, उसने इसके लिए पूछा।)) – vladr

+0

पोस्टर ने कहा था "खोज खोजने के बजाय पाठ ढूंढने और लाइनों को प्रिंट करने के लिए एक और सुझाव भी स्वागत है" और "लिनक्स" प्रश्न को टैग किया गया है, इसलिए जीएनयू grep शायद ठीक है। –

1

लाइनों (फ़ाइल जिसमें वह शामिल है) के साथ मुद्रित करने के लिए:

find . -type f -exec grep "text" {} /dev/null \;

पंक्ति से मेल खाती है कि में "grep" के बाद -A2 जोड़ने निम्नलिखित 2 लाइनों को देखने के लिए उपरोक्त रेखा, -B2 पहले दो पंक्तियों के लिए, और -C2 दोनों के लिए।

3

आप एक तेजी से खोज के लिए निम्नलिखित वैकल्पिक find निर्माण का उपयोग हो सकता है: प्रत्येक और हर फ़ाइल के लिए grep लागू (जो क्या -exec ... {} करता है) के बजाय

find . -type f -print0 | xargs -0 grep -Hn -C2 "Text To Find" 

, यह grep गुच्छों के लिए लागू करेगा फाइलों का

ध्यान दें कि -print0, -0 और -C2 विकल्पों पोर्टेबल नहीं हैं (find, xargs और grep कार्यक्रमों की जीएनयू वेरिएंट के साथ ठीक से काम करेंगे सबसे लिनक्स, BSD आदि प्रतिष्ठानों के साथ-साथ Cygwin और MinGW यानी, लेकिन नहीं है उन्हें "पुराने" सोलारिस, एचपीयूएक्स इत्यादि के साथ काम करने की उम्मीद है।)

+0

और xargs पर खोजने के लिए "-print0" और "-0" का उपयोग करना सुनिश्चित करें। इससे उन फ़ाइलों के साथ मदद मिलेगी जिनके पास रिक्त स्थान की बजाय नलिका का उपयोग करके उनके नामों में रिक्त स्थान हैं। – Andy

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

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