2012-06-26 20 views
8

पर --ignore रास करने के लिए मैं पर OSX निम्न करने के लिए कोशिश कर रहा हूँ:कैसे OSX

ls -lR --ignore *.app

तो यह है कि मैं रिकर्सिवली .app फ़ोल्डर के लिए को छोड़कर सभी फ़ोल्डर के माध्यम से खोज सकते हैं।

हालांकि ऐसा लगता है कि डार्विन में कोई --ignore या --hide विकल्प नहीं लगता है।

शायद एक स्क्रिप्ट रिकर्सिवली एक सेट के लिए एक फ़ोल्डर गहरी खोज करने के लिए और मुझे यकीन है कि मैं उत्पादन के प्रारूप की वजह से कुछ भी के माध्यम से पाइप ls -lR नहीं कर सकते नहीं कर रहा हूँ:

./ROOT/Applications/Some_app: 
drwxr-xr-x 3 admin root 102 26 Jun 11:03 app-bundle.app #<- WANT THIS 
[email protected] 24 admin root 816 26 Jun 11:24 folder   #<- WANT THIS 

./ROOT/Applications/Some_app/app-bundle.app:     #<- DON'T WANT 
drwxr-xr-x 7 admin root 238 26 Jun 11:03 Contents   #<- DON'T WANT 
... 

उत्तर

7

उपयोग find:

find . -ls -name '*.app' -prune 
+0

ढूंढें !! शर्मनाक में _hangs सिर एक आकर्षण की तरह काम करता है। धन्यवाद-आप (उत्तर देरी के लिए प्रतीक्षा कर रहे हैं) – hoss

+0

आपका दूसरा पुनरावृत्ति बहुत बेहतर है। – hoss

+0

इसके बारे में कुछ और सोचा, और यह और भी आसानी से किया जा सकता है। हमेशा -एलएस यदि यह एक ऐप है, -प्रून। –

4

बैश में, आप एक पैटर्न को बाहर करने के लिए विस्तारित ग्लोबिंग का उपयोग कर सकते हैं।

shopt -s extglob # this must be on its own line 
echo !(*.app) # match everything except for the given pattern 

यदि आपके पास संस्करण 4 या उच्चतम संस्करण है, तो आप इसे पुनः करने के लिए ग्लोबस्टार का उपयोग कर सकते हैं।

shopt -s globstar 
shopt -s extglob 
echo **/!(*.app) 
+0

कार्यों से अंतिम '/' छोड़ना सुनिश्चित करना होगा, थोड़ा अजीब प्यार की आवश्यकता है, लेकिन क्या यह रिकर्सिव हो सकता है? – hoss

+0

@ हॉस - केवल ग्लोबस्टार का उपयोग करके बैश v4 या उच्चतर पर। उत्तर में जोड़ा गया – jordanm

+1

यह एक बहुत अच्छा और सुरुचिपूर्ण समाधान है। – hoss

-1

एक वैकल्पिक grep के लिए पाइप के लिए है:

ls | grep -v

+0

यह सुनिश्चित नहीं है कि यह एक पुनरावर्ती सूची में .app निर्देशिकाओं में आगे बढ़ना नहीं चाहते हैं, इस सवाल को हल करेंगे। अगर मैंने 'ls -R | का उपयोग किया grep -v ".app" '। * निर्देशिका * के लिए * सभी * फ़ाइलों * को छोड़कर * मैं सभी बच्चे फ़ाइलों और फ़ोल्डरों सहित। – hoss