2010-05-09 27 views
40

मेरे फ़ोल्डर संरचना इस तरह दिखता है के साथ अन्य सभी रखते हुए:पावती: केवल एक निर्देशिका को छोड़कर, लेकिन एक ही नाम

/app 
/app/data 
... 
/app/secondary 
/app/secondary/data 

मैं रिकर्सिवली खोज करने के लिए /app, /app/data सहित चाहते हैं। मैं हालांकि /app/secondary/data खोजना नहीं चाहता हूं। यह मेरे पास अब तक है:

ack --ignore-dir=data searchtext 
ack --ignore-dir=secondary/data searchtext 

पहला आदेश दोनों निर्देशिकाओं को अनदेखा कर रहा है और दूसरा उनमें से किसी को अनदेखा नहीं कर रहा है। ऐप फ़ोल्डर के भीतर से, मेरे एएके कमांड को कैसा दिखना चाहिए?

उत्तर

22

यह उत्तर 2 से पहले एके के संस्करणों के लिए है, This answer for versions of Ack >=2 देखें।

पहला व्यक्ति दोनों को अनदेखा कर रहा है क्योंकि दोनों के पास उप-निर्देशिका के रूप में 'डेटा' है और डिफ़ॉल्ट रूप से एके उप-डीआईआर खोजता है। तो यह उस नाम के साथ किसी उप-डीआईआर को अनदेखा कर देगा। दुर्भाग्यवश, आपका दूसरा तरीका या तो काम नहीं करता है। यह मेरे लिए काम करता है:

ack -a searchtext -G '^(?!.*secondary/data.*).*$' 
-एक के बजाय

केवल कुछ फ़ाइल प्रकारों के लिए खोज करने के लिए सभी फ़ाइलों को खोज करने के लिए, पावती-ग्रेप --help = प्रकार देखते हैं, जैसे --type = पाठ

+0

धन्यवाद प्रतिक्रिया के लिए। मैं इस हो रही है: $ पावती-ग्रेप --text जी पावती-ग्रेप '^ (* माध्यमिक/डेटा *?!।।) * $।': नहीं नियमित अभिव्यक्ति पाया। – mattalxndr

+0

है कि क्योंकि तुम भूल गया यह पैटर्न आप के लिए grepping कर रहे हैं, यानी 'searchtext' – rkulla

+0

कैसे एक '~/.ackrc' फ़ाइल में इस जी विकल्प डाल करने के बारे में जानकारी के लिए देने के लिए, देखें: http://stackoverflow.com/प्रश्न/5425363/पावती 2''' –

47

बड़े एके के संस्करण केवल फ़ोल्डर का नाम ले सकते हैं, फ़ोल्डर पथ नहीं। संस्करण 1.93_02 के रूप में, वे में इस क्षमता को जोड़ दिया है:

1.93_02  Wed Oct 6 21:39:58 CDT 2010 
    [ENHANCEMENTS] 
    The --ignore-dir option now can ignore entire paths relative 
    to your current directory. Thanks to Nick Hooey. For example: 

     ack --ignore-dir=t/subsystem/test-data 

(betterthangrep.com/Changes से)

आप देख सकते हैं आप --version साथ पास कौन सा संस्करण:

ack --version 
+0

एके 2.0 में काम नहीं करता है https://github.com/petdance/ack2/issues/291 – geekQ

संबंधित मुद्दे