2013-02-12 19 views
6

लिनक्स में की सूची, मैं सभी फ़ोल्डर/उप-फ़ोल्डर का नाम पता लगाने के लिए और पाठ फ़ाइल पर रीडायरेक्ट करनेसभी फ़ोल्डर और उप-फ़ोल्डरों

मैं ls की कोशिश की -alR> list.txt चाहते हैं, लेकिन यह सभी फ़ाइलों को देता है + फ़ोल्डर्स

उत्तर

21

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

find . -type d > output.txt 

या tree

tree -d > output.txt 

tree , अगर आपके syste पर स्थापित नहीं है मीटर।

sudo apt-get install tree 
+0

सहायता के लिए धन्यवाद इस विकल्प में, एक फ़ोल्डर को बाहर करने का कोई विकल्प है ... मेरे पास ~ स्नैपशॉट फ़ोल्डर, जिसे मैं बाहर करना चाहता हूं? – Sandeep540

+0

ढूंढें। -type d -name ~ snapshot -prune> output.txt – Sandeep540

+0

यह बहुत अच्छा है! और हम इसे अल्फापेटिक ऑर्डर द्वारा कैसे ऑर्डर कर सकते हैं? – sangorys

4
find . -type d > list.txt 

वर्तमान पथ के तहत सभी निर्देशिकाओं और उपनिर्देशिका सूचीबद्ध करेगा। यदि आप वर्तमान निर्देशिका के अलावा किसी अन्य पथ के नीचे सभी निर्देशिकाओं को सूचीबद्ध करना चाहते हैं, तो . को उस अन्य पथ में बदलें।

आप कुछ निर्देशिकाओं बाहर करना चाहते हैं, तो आप उन्हें बाहर एक नकारात्मक शर्त के साथ फ़िल्टर कर सकते हैं:

find . -type d ! -name "~snapshot" > list.txt 
+0

मेरी प्राथमिकता है "डु | कम" (या "डु | कट-एफ 2 | कम ") ... लेकिन आपका समाधान बेहतर है :) – paulsm4

+0

इस विकल्प में, क्या एक फ़ोल्डर को बाहर करने का कोई विकल्प है ... मेरे पास एक स्नैपशॉट फ़ोल्डर है, जिसे मैं बाहर करना चाहता हूं? – Sandeep540

+0

@ संदीप 540 ज़रूर। 'ढूंढें। -type d! -name "~ snapshot"> list.txt' – Amber

1

साथ ही find अन्य उत्तर में सूचीबद्ध है, बेहतर गोले, दोनों recurvsive globs और ग्लोब मैचों में से छानने की अनुमति देते हैं, उदाहरण के लिए zsh में तो ...

ls -lad **/*(/) 

... सूचियों सभी निर्देशिकाओं जबकि सभी "-l" जानकारी है कि आप चाहते हैं, जो आप अन्यथा की तरह कुछ का उपयोग कर फिर से बनाने हूँ ...

find . -type d -exec ls -ld {} \; 

(काफी के रूप में आसान नहीं अन्य के रूप में एक रखने swers सुझाव है)

खोजने के लाभ यह है कि यह खोल के अधिक स्वतंत्र है - अधिक पोर्टेबल, यहां तक ​​कि एक C/C++ कार्यक्रम आदि के भीतर से system() कॉल के लिए ..

+0

सूचीबद्ध नहीं करता है इस विकल्प में, क्या एक फ़ोल्डर को बाहर करने का कोई विकल्प है ... मेरे पास ~ स्नैपशॉट फ़ोल्डर है, क क्या मैं बाहर करना चाहता हूं? – Sandeep540

+0

@ संदीप 50: zsh में, हाँ: 'EXTENDED_GLOB' सेट करें, फिर 'ls -lad **/* ~ **/~ स्नैपशॉट (/)'। विवरण: 'मैन zshall'/"x ~ y से (EXTENDED_GLOB सेट होने की आवश्यकता है।) पैटर्न x से मेल खाने वाली किसी भी चीज़ से मिलान करें लेकिन y से मेल नहीं खाता है। [...]"। ("^ X भी है (EXTENDED_GLOB सेट होने की आवश्यकता है।) पैटर्न x को छोड़कर कुछ भी मेल खाता है। [थोड़ा अलग वाक्यविन्यास + उदाहरण के आगे स्पष्टीकरण]") –