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


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.