आप विशिष्ट फ़ाइल प्रकारों में विशिष्ट पाठ की खोज कैसे करते हैं? [डुप्लिकेट]


12

संभव डुप्लिकेट:
मैं कुछ पाठ के लिए स्रोत फ़ाइलों में grep कैसे कर सकता हूं?

वर्तमान निर्देशिका के तहत, विशिष्ट फ़ाइल प्रकारों में विशिष्ट पाठ की खोज करने के लिए कमांड क्या है?


आप क्या चाहते हैं? पाठ चालू है? पाठ में फ़ाइल का नाम क्या है?
MaQleod

@MaQleod: यह अच्छा होगा (फ़ाइल नाम + लिननम्बर + स्निपेट), यदि यह संभव है।
Phillip

@ एसएलएचएचके: एकेक-जीआरआरपी स्थापित नहीं है; मेरे पास इसे स्थापित करने की अनुमति नहीं है।
Phillip

1
आप की जरूरत नहीं होगी ack-grep, आप प्रश्न में उदाहरणों का उपयोग एक शुरुआत (जैसे मैंने कहा) के रूप में कर सकते हैं, अर्थात् find | xargs | grep लाइनों। विशिष्ट उत्पादन के लिए, man grep हमेशा पढ़ने के लिए उपयोगी है।
slhck

@ श्लोक: धन्यवाद, तो मैंने किया grep -r --include=*.<type> "<string>" ., जो काम किया। दुर्भाग्य से, आदमी पृष्ठ अनुगामी डॉट का उल्लेख करने में बहुत सीधा नहीं है।
Phillip

जवाबों:


11
find . -type f -name '*.extension' | xargs grep "string"

यह कमांड चलता है खोज स्थानीय निर्देशिका (।) पर पैटर्न * नाम से मेल खाने वाले नामों वाली किसी भी फाइल के लिए। फिर रन ग्रेप के परिणामों पर "स्ट्रिंग" के लिए खोज । ध्यान दें कि खोज स्वाभाविक रूप से पुनरावर्ती है। जब तक आप उन फ़ाइलों को अलग कर सकते हैं जो आप उन फ़ाइलों से चाहते हैं जो आप नाम के आधार पर नहीं करते हैं, तो यह आपके लिए काम करना चाहिए।


2
यह रिक्त स्थान वाले फ़ाइल नाम के साथ टूट जाता है, आपको इसका उपयोग करना चाहिए print0 सुरक्षित होने का विकल्प।
slhck

केवल find -print0 मदद नहीं करेगा, भी उपयोग करें xargs -0: find . -type f -name "*.ext" -print0 | xargs -0 grep "string"
BurninLeo

0

फ़ाइल का नाम सूचीबद्ध करने के लिए, निर्दिष्ट फ़ाइल में लाइन नंबर और टेक्स्ट दिखाई देने वाली लाइन:

for x in *.xxx; do [ -r $x ] | cat $x | grep -n TEXT | xargs printf "$x:%s\n";done

यह केवल वर्तमान निर्देशिका में चलेगा, लेकिन यह आपके लिए अच्छी तरह से प्रारूपित करेगा।

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