ack: केवल एक निर्देशिका को छोड़कर, लेकिन सभी को समान नाम के साथ रखना




(2)

मेरी फ़ोल्डर संरचना इस तरह दिखती है:

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

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

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

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


Ack के पुराने संस्करण केवल फ़ोल्डर का नाम ले सकते हैं, फ़ोल्डर पथ का नहीं। संस्करण के रूप में 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

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

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

ack -a searchtext -G '^(?!.*secondary/data.*).*$'

सभी फ़ाइलों को खोजने के लिए -a के बजाय, ack-grep --help = केवल कुछ निश्चित फ़ाइल प्रकारों की खोज करने के लिए, जैसे --type = टेक्स्ट देखें