2011-02-07 7 views
21

मेरे पास डेटा युक्त बहुत से उपनिर्देशिकाएं हैं, और मुझे अपनी नौकरियों (उपनिर्देशिका) की एक छोटी सूची चाहिए। मैं निम्नलिखित कमांड से खुश नहीं हूं।'केवल एक स्तर गहराई' कैसे करें?

$ ls H2* 
H2a: 
energy.dat overlap.dat 
norm.dat zdip.dat ... 
(much more) 
H2b: 
energy.dat overlap.dat 
norm.dat zdip.dat ... 
(much more) 

यह आवश्यक अव्यवस्था वाइल्डकार्ड (आउटपुट को सीमित करने) के उद्देश्य को हरा देती है। मैं आउटपुट को एक स्तर पर गहराई से कैसे सीमित कर सकता हूं? मैं निम्नलिखित उत्पादन को देखने के लिए

H2a/ H2b/ H2z/ 

आपकी मदद की, निक

उत्तर

34

के लिए धन्यवाद का प्रयास करना चाहते हैं इस

ls -d H2*/ 

-d विकल्प है, लेकिन द्वारा "केवल निर्देशिका" सूची माना जाता है खुद ही

. 

जो मैं व्यक्तिगत रूप से सूचीबद्ध करता हूं y अजीब तरह का लगता है। निर्देशिकाओं की वास्तविक सूची प्राप्त करने के लिए वाइल्डकार्ड की आवश्यकता है।

अद्यतन: @Philipp बताते हैं के रूप में, आप इस और भी अधिक concisely और

echo H2*/ 

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

+3

तो mydir एक निर्देशिका का नाम है और आप पर अमल 'ls mydir', एलएस mydir की सामग्री को दर्शाता है। यदि आप 'ls -d mydir' निष्पादित करते हैं, तो ls अपनी सामग्री को दिखाए बिना mydir सूचीबद्ध करता है। अब यदि कोई निर्देशिका या वाइल्डकार्ड प्रदान नहीं किया गया है, तो ls '।' पर चल रहा है। (यानी वर्तमान निर्देशिका) डिफ़ॉल्ट रूप से। तो 'ls -d' 'ls -d' के बराबर है, जिसे '।' सूचीबद्ध करना चाहिए। इसकी सामग्री को दिखाए बिना। मुझे आशा है कि थोड़ा सा स्पष्ट होगा कि निर्देशिका नाम या वाइल्डकार्ड की आवश्यकता क्यों है। –

+0

@ मंसूर, स्पष्टीकरण के लिए धन्यवाद, जो समझ में आता है। – harpo

+0

-d विकल्प इको समाधान से बेहतर है जब आप उदा। फ़ोल्डर अनुमतियों को देखने के लिए, एक लंबी सूची के लिए। बहुत बहुत धन्यवाद! –

10
echo H2* 

यह बैश जो विस्तार करता है, तो आप भी ls जरूरत नहीं है।

echo H2*/ 
+0

दिलचस्प बिंदु। लेकिन इसमें "एच 2" से शुरू होने वाली फाइलें शामिल होंगी, और ओपी केवल उपनिर्देशिका चाहता है। – harpo

+0

@harpo: ठीक है, मैंने अपना जवाब – Philipp

2

शायद यह आप के लिए क्या देख रहे है:

आप दोनों फ़ाइलों और निर्देशिकाओं H2 के साथ शुरू की है, तो आप निर्देशिका के लिए ग्लोब प्रतिबंधित करने के लिए एक स्लेश जोड़ सकते हैं?

ls | grep H2* 
+1

मेरे लिए बिल्कुल सही संपादित किया है। आपको 'ls -l | जैसी चीजें करने की अनुमति भी देता है grep पैटर्न'। –

13

आप पा उपयोग पर विचार करना चाहिए,

find . -type d -maxdepth 1 -name "H2*" 
+1

टाइप-मैक्सडेप को पहले टाइप करने पर विचार करें, आपका कमांड शायद एक चेतावनी में चलाएगा। एक बड़ा सौदा नहीं, कभी नहीं। –

3

उपयोग tree स्टीव बेकर ने http://mama.indstate.edu/users/ice/tree/ पर की तरह यह चीजें हैं जो ls से याद कर रहे हैं की एक बहुत कुछ के लिए में भरता है। निर्देशिका एक परत गहरी सूचीबद्ध करने के लिए:

tree -adi -L 1 H2* 
संबंधित मुद्दे