मैं एक निर्देशिका में विशेष रूप से फ़ाइलों को कैसे पुनरावर्ती कर सकता हूं?


14

मैं linux और grep के लिए नया हूं, और अपना रास्ता खोजने की कोशिश कर रहा हूं।

find -name *.javaमैं का उपयोग करके मैं एक विशेष निर्देशिका में सभी जावा फाइलों के नाम खोजने में सक्षम हूं। मान लीजिए कि मैं fooइन फ़ाइलों में होने वाली संख्या को गिनना चाहता हूं , तो मैं यह कैसे करूंगा?

Ibe चीजों की कोशिश कर रहा है जैसे:

grep -r "foo" *.java

और जैसी प्रतिक्रियाएँ मिल रही हैं:

grep:  *.java:  No such file or directory

कोई विचार?



1
क्षमा करें, मैं अगली बार कठिन दिखूंगा। उल्लेखनीय है कि प्रश्न समान थे।
एरिक विल्सन

1
3512 का खिताब काफी बेहतर हो सकता है । "मूल grep उपयोग प्रश्न" आपको वास्तविक प्रश्न के बारे में पूरी जानकारी नहीं देता है। जब तक कि यह तय नहीं हो जाता है, हम शायद और अधिक डुप्लिकेट करेंगे।
रिचर्ड हॉकिंस

1
@richardhoskins, फिक्स्ड।
जॉन टी

जवाबों:


16
find . -name '*.java' | xargs grep <your pattern here>

5
बेहतर अभी तक, शून्य समाप्त वस्तुओं का उपयोग करें ताकि इसमें एक स्थान के साथ एक फ़ाइल नाम दो फ़ाइल नामों में विभाजित न हो: खोज। -नाम '* .जवा' -प्रकार f -print0 | xargs -0 grep <अपने पैटर्न यहाँ>
CoverosGene

1
@CoverosGene: xargs को संभालने के लिए आप --replace विकल्प का उपयोग कर सकते हैं - इस तरह: ... | xargs --replace grep "{}" <पैटर्न>
arathorn

बहुत धन्यवाद, मुझे पता था कि एक कमांड होना चाहिए जो xargsकरता है।
एरिक विल्सन

6

इस प्रकार की आवश्यकता के लिए विशेष रूप से डिज़ाइन किया गया एक उपकरण है: ack

ack grep जैसा एक टूल है, जिसका उद्देश्य प्रोग्रामर्स को विषम स्रोत कोड के बड़े पेड़ों के साथ बनाना है

यह भी पढ़ें "grep के बजाय ack का उपयोग करने के शीर्ष 10 कारण।" पर पावती पेज।


1
भावहीन। एक वास्तविक यूनिक्स उपकरण को एक पुनरावर्ती नाम की आवश्यकता होती है जो अपनी विरासत का जिक्र करता है ... जैसे abtg [ABTG का बेहतर थान ग्रीप], या कुछ और। एसीके? इसके बारे में केवल अच्छी सोच यह है कि बेहतर NACK के लेखक के पास पहले से ही एक नाम है;)
मिकेग

जिन कारणों से मैं वास्तव में प्यार करता हूं उनमें से एक यह है कि आप फ़ाइल प्रकार निर्दिष्ट कर सकते हैं। उदाहरण के लिए, मैं "ack --html <pattern>" के साथ एक ही बार में मेरी सभी .html, .htm, .xhtml, .dhtml, आदि फाइलों को खोज लेता हूँ।
मार्क वैन लेंट

Ack ने मेरे लिए बहुत ज्यादा बदली हुई जगह बनाई है।
रयान सी। थॉम्पसन


0

खोजो। -Type f -name '* .java' -print0 | xargs -0 grep -wo 'foo' | wc -l


3
SuperUser में आपका स्वागत है! आप पाएंगे कि आपके उत्तरों पर तब अधिक ध्यान दिया जाता है जब वे अधिक वर्तमान प्रश्नों (यह एक 2009 से है) और जब आप समझाते हैं कि आपका उत्तर पहले से स्वीकार किए गए से बेहतर क्यों है।
एरिक विल्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.