2009-05-02 14 views
22

मेरे पास एक निर्देशिका है जिसमें कई उपनिर्देशिकाएं हैं। मैं केवल उन उपनिर्देशिकाओं को सूचीबद्ध करना चाहता हूं जिनमें कम से कम एक फ़ाइल हो। मैं उसे कैसे कर सकता हूँ?लिनक्स पर गैर-खाली उप-निर्देशिकाओं को कैसे सूचीबद्ध करें?

+0

क्या आप केवल उन्हीं निर्देशिकाएं चाहते हैं जो आपकी निर्देशिका की तत्काल उपनिर्देशिकाएं हैं, या * सभी * उपनिर्देशिकाएं नहीं कितना गहराई से घोंसला? – Naaff

+0

यदि उपनिर्देशिका में अन्य उप-उप निर्देशिकाएं हैं लेकिन कोई फ़ाइल नहीं है, तो मैं इसे सूचीबद्ध नहीं करना चाहता – Jaelebi

उत्तर

39
find . -mindepth 1 -maxdepth 1 -not -empty -type d 

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

+0

द माइंडेपथ और -मैक्सडेप विकल्प इसे केवल तत्काल उपनिर्देशिका तक सीमित करते हैं। इन स्तरों को प्रभावित करने के लिए इन स्तरों को प्रभावित करें। उन्हें छोड़कर सभी उपनिर्देशिका किसी भी स्तर पर मिल जाएगी। – Naaff

+0

और याद रखें कि - जीएनयू-सामान नहीं है। पोर्टेबल होने के लिए, उपयोग करें! इसके बजाय - वास्तव में नहीं, मैं नहीं देखता कि आप हमेशा क्यों उपयोग नहीं करेंगे! इसके बजाय, नहीं देखते-नहीं, आपको कोई फायदा नहीं देता है) – lhunath

+0

क्योंकि! ऐसा लगता है कि यह एक खोल मेटाएक्टेक्टर होना चाहिए और मैं कभी याद नहीं कर सकता कि मुझे इसे उद्धृत करना है या नहीं ;-) लेकिन आप इसके बारे में अधिक पोर्टेबल होने के बारे में सही हैं। (मुझे लगता है कि चूंकि यह उत्तर स्वीकार कर लिया गया था, जीएनयू-विशिष्ट वाक्यविन्यास ओपी के लिए काम करता है) –

3

कैसे के बारे में:

find /nominated/directory -type f | 
sed 's%/[^/]*$%% | 
sort -u 

फ़ाइलें खोजें - ड्रॉप फ़ाइल नाम हिस्सा - तरह विशिष्ट।

यह उपनिर्देशिका सूचीबद्ध नहीं करेगा जिसमें केवल अन्य उप-उप-निर्देशिकाएं होंगी।

5
find . -type f -print0 | xargs -0 -n 1 dirname | sort -u 
+0

एक ही चीज़ के लिए थोड़ा छोटा वाक्यविन्यास: ढूंढें। -type f -exec dirname {} \; | sort -u –

+0

बहुत खेद है। एक बेजोड़ एकल उद्धरण प्रारंभिक समाप्ति का कारण बनता है। पूरी तरह से मेरी गलती। –

संबंधित मुद्दे