मैं एक निश्चित पैटर्न (लिनक्स में) से मेल खाते सभी निर्देशिकाओं और उप-निर्देशिकाओं को कैसे (या बहिष्कृत) करूं?


17

मैं उन सभी निर्देशिकाओं और उप-निर्देशिकाओं को खोजने के लिए लिनक्स खोजने के लिए कमांड का उपयोग करने का प्रयास कर रहा हूं जिनके पास अपने मार्ग में .svn (सबवर्सन हिडन फोल्डर) नहीं हैं। मैं केवल वास्तविक .svn निर्देशिकाओं को बाहर करने के लिए इसे प्राप्त कर सकता हूं, लेकिन किसी भी उप-निर्देशिका को नहीं।

यहाँ मैं अभी क्या कर रहा हूँ:

find . -type d \! -iname '*.svn*'

मैंने भी कोशिश की है:

find . -type d \! iname '.svn' \! iname '.svn/*'

सिर्फ एक FYI करें, मैं खोज पैटर्न का उपयोग करने की कोशिश कर रहा हूं ताकि मैं अपनी रिपॉजिटरी में सभी निर्देशिकाओं में कुछ तोड़फोड़ करने वाले गुणों को तोड़फोड़ के छिपे हुए फ़ोल्डरों और उनकी उप-निर्देशिकाओं को छोड़कर लागू कर सकूं और निष्पादन कमांड को निर्देशिका कमांड से लौटाए गए निर्देशिका में लागू कर सके ) ..

TIA

जवाबों:


25
find . -type d -not \( -name .svn -prune \)

मैं इस एक के साथ जाऊंगा, हालांकि वे सभी काम करने लग रहे थे।
जेसन डाउन

मैंने पहले का उपयोग किया है, लेकिन मैंने उस \ (... \) चाल को नहीं देखा था। धन्यवाद।
रोरी

क्या आप बता सकते हैं कि यह नोड.जेएस / एक्सप्रेस एप में कैसे काम करेगा जहां मैं लाइनों को गिनने से नोड-मॉड्यूल को बाहर करना चाहता हूं? मैंने find . -name '*.js' -not \( -name 'node_modules' -prune \) | xargs wc -l सफलता के बिना प्रयास किया ...
shredding

Node.js / Express ऐप्स के संबंध में @shredding और खोज के परिणामों से नोड_मॉड्यूल्स निर्देशिकाओं को छोड़कर, यह मेरे लिए काम करता है: ढूंढें। -नाम ' .test.js ' -not (-wholename '* node_modules ') ... यह देखते हुए कि जिन परीक्षणों को मैं चलाना चाहता हूं, उन्हें ".test.js" के साथ प्रत्यय दिया गया है
मिस्ट्रीलुन

क्या यह बिना काम करेगा -type d? मुझे सभी फ़ाइल खोजना पसंद है लेकिन ".git" को पुन: छोड़ दें
जेम्स मिच

6

क्या बस के बारे में?

find . -type d |  grep -v '.svn'

किसी भी खोज क्रिया का उपयोग करने की अपनी क्षमता खो देता है।
डेविड पशले

हाँ, लेकिन इसके बजाय एक अच्छा सा श लूप के बारे में क्या? :) फील इन के लिए find . -type d | grep -v '.svn'; जो भी हो गूंज; किया
वाज़ोक्स

6

-pathविकल्प खोजने के बारे में क्या ?

find . -type d ! -path '*.svn*'

1
एक बंद बोली छूटी। वहाँ एक बाहरी मौका है कि वाइल्डकार्ड बहुत लालची हो सकते हैं।
डैन कार्ली

2

खोजो। -पथ '।/tmp' -prune -o ......।


2

आप उपयोग कर सकते हैं:

find . -type d -not -wholename '*.svn*' 

इसने जवाब के सामने से * छीन लिया ... ढूंढा जाना चाहिए। -टाइप d -not -wholename '/ /.svn/ ' (कि व्होलनेम स्क्वॉट एस्टरिस्क स्लैश डॉट svn स्लैश एस्टेरिस स्क्वॉट)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.