जवाबों:
xargs
एक ऐसे प्रारूप में इनपुट की अपेक्षा करता है जो कोई अन्य कमांड उत्पन्न नहीं करता है, इसलिए इसका प्रभावी ढंग से उपयोग करना कठिन है। यहां क्या गलत हो रहा है कि आपके पास एक फ़ाइल है जिसका नाम इनपुट पर उद्धृत किया जाना चाहिएxargs
(संभवतः युक्त '
)।
अगर आपका grep -r
या को सपोर्ट करता है-R
पुनरावर्ती खोज के लिए विकल्प , तो इसका उपयोग करें।
grep -r word .
अन्यथा, के -exec
प्राथमिक का उपयोग करें find
। यह xargs
फ़ाइल नाम पर बाधाओं के बिना, समान प्रभाव प्राप्त करने का सामान्य तरीका है । यथोचित हाल के संस्करण find
आपको एक ही कॉल में कई फाइलों को सहायक कमांड में समूहित करने की अनुमति देते हैं। पास /dev/null
हो रहा हैgrep
सुनिश्चित है कि यह, प्रत्येक मैच के सामने फ़ाइल नाम प्रदर्शित करेगा, भले ही यह एक एकल फाइल पर कहा जा होता है।
find . -type f -exec grep word /dev/null {} +
पुराने संस्करणों पर find
(पुराने सिस्टम या ओपनबीएसडी पर, या कम उपयोगिताओं जैसे कि व्यस्त बॉक्स) केवल एक समय में एक फाइल पर सहायक कमांड को कॉल कर सकते हैं।
find . -type f -exec grep word /dev/null {} \;
के कुछ संस्करणों find
और xargs
एक्सटेंशन हैं जो उन्हें सही ढंग से संवाद करने देते हैं, अशक्त वर्णों को अलग-अलग फ़ाइल नामों का उपयोग करते हैं ताकि किसी भी उद्धरण की आवश्यकता न हो। इन दिनों, केवल OpenBSD में यह सुविधा होती है -exec … {} +
।
find . -type f -print0 | xargs -0 grep word /dev/null
मुझे लगता है कि आप पहले विकल्प का मतलब है
grep पुनरावर्ती, फ़ाइलों के अंदर सामग्री खोजने के लिए
grep -R "content_to_search" /path/to/directory
एलएस पुनरावर्ती है, जो मेल खाने वाली फ़ाइलों की खोज के लिए
ls -lR | grep "your_search"
यदि आपके पास GNU टूल हैं (जो आप लिनक्स टैग के सटीक होने पर करते हैं) तो आप उपयोग कर सकते हैं -print0
और -0
सामान्य रूप से उद्धृत समस्याओं के बारे में जान सकते हैं:
find . -type f -print0 | xargs -0 grep word
वर्तमान निर्देशिका में आप grep का उपयोग कर सकते हैं:
grep -irl root .
मुझे लगता है कि आप फ़ाइलों में एक स्ट्रिंग ढूंढना चाहते हैं
प्रयत्न find . -name "*" | xargs grep -l "string"
/dev/null
। यह एक उपद्रव है जब आउटपुट प्रारूप अलग-अलग हो सकता है, यह निर्भर करता है कि कितनी फाइलें मेल खाती हैं ... धन्यवाद।