निर्देशिका को बाहर करें


13

मैं लिनक्स (उबंटू) पर हूं और मैं कुछ निर्देशिका (जैसे .hg) को बाहर करना चाहूंगा जब मैं कर रहा हूं

find | less  

मैंने .hg निर्देशिका को सूची से बाहर करने के लिए निम्नलिखित कोशिश की, लेकिन काम नहीं कर रहा है।

find -type d \( ! -iname \.hg \)
find -type d \( ! -name \.hg \)
find -type d \( ! -iname .hg \)

मैं .directoryएक खोज आदेश में कैसे बाहर कर सकता हूं

जवाबों:


14

इसी तरह के एक findसमाधान के लिए शोध पर मैंने 'खोजने ’के' -प्र्यून’ विकल्प का उपयोग करने के बारे में सहायक व्याख्या की ? लॉरेंस गोंसाल्वेस द्वारा ।

आप कुछ इस तरह का उपयोग कर सकते हैं:

find . \( -type d -name .hg -prune \) -o \( -type f -name "foo" -print \)

या (नाम के बिना)

find . \( -type d -name .hg -prune \) -o \( -type f -print \)

(बच गए) कोष्ठक \(और \)परीक्षणों ( typeऔर name) और संबंधित क्रियाओं ( pruneऔर print, क्रमशः) को एक साथ छोड़ दिया और OR ( -o) का समूह बनाया।

चूँकि -oजक्सटैप्स की तुलना में कम पूर्वता है, आप यदि चाहें तो कोष्ठकों को छोड़ सकते हैं। कई findकार्यान्वयन भी आपको अंतिम छोड़ देते हैं -print।

find . -type d -name .hg -prune -o -type f -name "foo" -print

1
मैं अपना समाधान लिखने वाला था, लेकिन ऐसा प्रतीत होता है। व्यक्तिगत रूप से मैं -pruneकोष्ठक के पहले सेट के अंदर रखूँगा, और -type f -printदूसरे सेट में, बस और / या संचालन को अधिक स्पष्ट बनाने के लिए, लेकिन अन्यथा यह मेरे लिए स्पॉट-ऑन दिखता है।
— me_and

मैंने @me_and की टिप्पणी के लिए कोष्ठक (और उनके तर्क) में सुधार किया।
— फेह

2

पर एक नज़र है ack: http://betterthangrep.com/

डिफ़ॉल्ट बहिष्कृत फ़ोल्डरों का एक उचित सेट होने के अलावा (जैसे कि उदाहरण के लिए एक डिफ़ॉल्ट बाहर रखा गया है), नए फ़ोल्डर को बाहर करना आसान है:

ack --ignore-dir=.directory search_term

इसे अपने उपयोग के मामले में वापस लाने के लिए जहां आप फ़ाइलों की सूची की तलाश कर रहे हैं, आप -fविकल्प का उपयोग करेंगे, जैसे:

ack -f --ignore-dir=.directory

मैंने सघन खोज लिखना बंद कर दिया / सरल ack वाले को कमांड ढूंढे।

युक्ति: आमतौर पर उपयोग की जाने वाली कमांड लाइन विकल्प (उदाहरण के लिए फ़ोल्डर को छोड़कर) को एक .ackrc फ़ाइल में रखें।


find | lessप्रश्न के आधार पर , ओपी फाइलों की एक सरल सूची की तलाश में है। इससे कैसे मदद मिलती है?
— सीवीएन

@ MichaelKjörling जैसा कि मैंने अपने जवाब में कहा था, -f विकल्प फाइलों की एक सूची प्रदान करता है।
— ब्रायन लीथेम

-2

तुम कोशिश कर सकते हो

find \( ! -regex '.*/\.directory\(\|/.*\)' \)

बहुत लानत है यकीन है कि यह ओपी के लिए क्या पूछा जैसा कुछ भी नहीं है।
— me_and

मैंने सिर्फ यही सोचा था कि वह क्या मतलब है.directory
— yuyichao
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.