Ack और grep में अधिकतम गहराई की खोज कैसे करें?


32

क्या ackवर्तमान फ़ोल्डर पर केवल पाठ खोजने के लिए बताने का कोई तरीका है ? (या एक max-depthस्तर निर्दिष्ट करें ?) और साथ grep?


1
नहीं, ऐक के पास अधिकतम गहराई का विकल्प नहीं है, इसके अलावा अन्य -nबिल्कुल भी पुनरावृत्ति न करें।
एंडी लेस्टर

जवाबों:


22

का प्रयोग करें -nके लिए no-recurse:

$ ack -n foo

grepडिफ़ॉल्ट रूप से पुनरावर्ती नहीं है, और -rयदि आप पुनरावर्ती खोज चाहते हैं तो आपको ध्वज का उपयोग करना चाहिए ।

आप grepनिम्न के साथ वर्तमान निर्देशिका खोज सकते हैं:

$ grep -- foo *

13
सवाल का जवाब नहीं? (क्या होगा अगर मैं 2 की गहराई तक पुनरावृत्ति करना चाहता हूं)
स्टीवन लू

अच्छी बात है, मैं चूक गया। कोई सुझाव?
एरिक विल्सन

29

आप -exec तर्क के साथ युगल ढूंढ सकते हैं। उदाहरण:

find . -maxdepth 1 -exec grep foo {} \;

यह बढ़ाया जा सकता है, अर्थात -maxdepth 2


स्टीफन, मेरा जवाब ( -maxdepth 1) स्केलेबल था। उदाहरण के लिए -maxdepth 2। मुझे नहीं पता कि आपके द्वारा किए गए संपादन का वर्णन कैसे किया जाए।
डेविड विल्किंस

यदि आप @ का उपयोग नहीं करते हैं तो यह @stephane तक नहीं पहुंचेगा।
ब्रिअम

4
हाँ क्षमा करें, मैं मानता हूँ कि मेरा संपादन बहुत अधिक घुसपैठ था। आप अभी भी स्पष्ट करना चाह सकते हैं कि ( -maxdepth) पोर्टेबल / मानक सिंटैक्स (केवल GNU और कुछ BSDs) नहीं है। इसके अलावा, यहां कोई उपयोग नहीं \;है (एक grepफ़ाइल चलाएं )। का प्रयोग करें grep -H foo {} +(जीएनयू विशिष्ट) या grep foo /dev/null {} +(मानक) सुनिश्चित करें कि फ़ाइल नाम हमेशा छपा है बनाने के लिए। इसके समतुल्य मानक -maxdepth 2होंगेfind . -path './*/*' -type d -prune -o -type f -exec ...
स्टीफन चेज़लस

2
यह भी ध्यान दें कि आपका निर्देशिकाओं के लिए त्रुटि संदेश देगा ( .जैसे आप नहीं देते हैं -mindepth 1) जबकि GNU grepनिर्देशिकाओं को पढ़ने की कोशिश नहीं करेगा -r(यह उन पर पुनरावर्ती करता है)। आप एक जोड़ सकते हैं -d skipकरने के लिए grep(यह मानते हुए जीएनयू ग्रेप) या बेहतर जोड़ने ! -type dके लिए findऔर भी बेहतर या -type f(या -xtype fजीएनयू संभालने find) जैसा कि आप शायद नहीं करना चाहती grepगैर नियमित रूप से फ़ाइलों को पढ़ने में।
स्टीफन चेजलस

4
मैं grep -Hinइस दृष्टिकोण के साथ उपयोग करना चाहता हूं ताकि मैं फ़ाइल नाम और उस रेखा को देख सकूं जो घटित हो रही है।
जीडीपी 2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.