मैं अक्सर जटिल फ़ोल्डर संरचनाओं में स्रोत कोड खोजता हूं और मुझे इसका उपयोग करना उपयोगी लगता है:
cd /your/folder/
grep -rHino "your string"
उन मापदंडों के साथ, खोज का उपयोग किए बिना , मैं फ़ाइल को पूर्ण पथ और पंक्ति संख्या प्राप्त करता हूं जिसमें निर्दिष्ट स्ट्रिंग शामिल है ।
यह भी याद करने के लिए आसान है, क्योंकि यह मार एक तरह से अपनी खोज के माध्यम से तों राइनो :)
मैं दिखाऊंगा कि यह एक त्वरित उदाहरण के साथ कैसे काम करता है।
चलो बिल्ली का उपयोग करके एक फ़ाइल की सामग्री प्रदर्शित करते हैं:
jeeves ~ # cat fw.stop
#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
और स्ट्रिंग "iptables -P" युक्त सभी फ़ाइलों के लिए पुनरावर्ती खोज करें:
jeeves ~ # grep -rinHo "iptables -P"
fw.stop:9:iptables -P
fw.stop:10:iptables -P
fw.stop:11:iptables -P
जैसा कि आप आउटपुट में देख सकते हैं कि हमारा फ़ाइल नाम है: हिट रो: सर्च किया हुआ स्ट्रिंग
यहाँ प्रयुक्त मापदंडों का अधिक विस्तृत विवरण दिया गया है:
-प्रत्येक डायरेक्टरी ऑपरेंड के लिए, उस डायरेक्टरी की सभी फाइल्स को रिकर्सिअसली पढ़ें और प्रोसेस करें। कमांड लाइन पर प्रतीकात्मक लिंक का पालन करें, लेकिन पुनरावृत्ति का सामना करने वाले सिमिलिंक को छोड़ दें। ध्यान दें कि यदि कोई फ़ाइल ऑपरेंड नहीं दिया गया है, तो grep वर्किंग डायरेक्टरी को खोजता है। यह '--directories = recurse' विकल्प के समान है।
-i प्रत्येक मैच के लिए फ़ाइल का नाम प्रिंट करें। यह डिफ़ॉल्ट है जब खोज करने के लिए एक से अधिक फ़ाइल है।
-एक इनपुट फ़ाइल के भीतर 1-आधारित लाइन नंबर के साथ आउटपुट की प्रत्येक पंक्ति को उपसर्ग करें। -n POSIX द्वारा निर्दिष्ट है।)
-H प्रत्येक मैच के लिए फ़ाइल का नाम प्रिंट करें। यह डिफ़ॉल्ट है जब खोज करने के लिए एक से अधिक फ़ाइल है।
-o मिलान लाइनों के केवल मिलान किए गए (गैर-खाली) भागों को प्रिंट करें, प्रत्येक ऐसे भाग के साथ एक अलग आउटपुट लाइन पर। आउटपुट लाइनें इनपुट के रूप में एक ही सीमांकक का उपयोग करती हैं, और सीमांकक शून्य बाइट्स हैं यदि -z (--null-data) का भी उपयोग किया जाता है (अन्य विकल्प देखें)।
find . -type f -fprint /dev/stderr -exec cat {} \; | grep some string