क्या 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बिल्कुल भी पुनरावृत्ति न करें।