क्या ack
वर्तमान फ़ोल्डर पर केवल पाठ खोजने के लिए बताने का कोई तरीका है ? (या एक max-depth
स्तर निर्दिष्ट करें ?) और साथ grep
?
क्या ack
वर्तमान फ़ोल्डर पर केवल पाठ खोजने के लिए बताने का कोई तरीका है ? (या एक max-depth
स्तर निर्दिष्ट करें ?) और साथ grep
?
जवाबों:
का प्रयोग करें -n
के लिए no-recurse
:
$ ack -n foo
grep
डिफ़ॉल्ट रूप से पुनरावर्ती नहीं है, और -r
यदि आप पुनरावर्ती खोज चाहते हैं तो आपको ध्वज का उपयोग करना चाहिए ।
आप grep
निम्न के साथ वर्तमान निर्देशिका खोज सकते हैं:
$ grep -- foo *
आप -exec तर्क के साथ युगल ढूंढ सकते हैं। उदाहरण:
find . -maxdepth 1 -exec grep foo {} \;
यह बढ़ाया जा सकता है, अर्थात -maxdepth 2
-maxdepth 1
) स्केलेबल था। उदाहरण के लिए -maxdepth 2
। मुझे नहीं पता कि आपके द्वारा किए गए संपादन का वर्णन कैसे किया जाए।
-maxdepth
) पोर्टेबल / मानक सिंटैक्स (केवल GNU और कुछ BSDs) नहीं है। इसके अलावा, यहां कोई उपयोग नहीं \;
है (एक grep
फ़ाइल चलाएं )। का प्रयोग करें grep -H foo {} +
(जीएनयू विशिष्ट) या grep foo /dev/null {} +
(मानक) सुनिश्चित करें कि फ़ाइल नाम हमेशा छपा है बनाने के लिए। इसके समतुल्य मानक -maxdepth 2
होंगेfind . -path './*/*' -type d -prune -o -type f -exec ...
.
जैसे आप नहीं देते हैं -mindepth 1
) जबकि GNU grep
निर्देशिकाओं को पढ़ने की कोशिश नहीं करेगा -r
(यह उन पर पुनरावर्ती करता है)। आप एक जोड़ सकते हैं -d skip
करने के लिए grep
(यह मानते हुए जीएनयू ग्रेप) या बेहतर जोड़ने ! -type d
के लिए find
और भी बेहतर या -type f
(या -xtype f
जीएनयू संभालने find
) जैसा कि आप शायद नहीं करना चाहती grep
गैर नियमित रूप से फ़ाइलों को पढ़ने में।
grep -Hin
इस दृष्टिकोण के साथ उपयोग करना चाहता हूं ताकि मैं फ़ाइल नाम और उस रेखा को देख सकूं जो घटित हो रही है।
-n
बिल्कुल भी पुनरावृत्ति न करें।