2010-05-26 9 views
7

में मैं निर्देशिकाकोई फ़ाइलें के साथ निर्देशिकाएँ खोजें यूनिक्स/लिनक्स

/home 
    /dir1 
    /dir2 
    ... 
    /dir100 

उनमें से कुछ उस में कोई फ़ाइलें की एक सूची है। ऐसा करने के लिए मैं यूनिक्स find का उपयोग कैसे कर सकता हूं?

मैं

find . -name "*" -type d -size 0 

की कोशिश की काम करने के लिए प्रतीत नहीं होता।

उत्तर

11

क्या आपके खोज ने -empty को भविष्यवाणी की है?

आप find . -type d -empty

1

उपयोग करने के लिए आप एक zsh उपयोगकर्ता हैं, तो सक्षम होना चाहिए, तो आप हमेशा ऐसा कर सकते हैं। आप नहीं कर रहे हैं, हो सकता है यह आप को समझाने होगा:

echo **/*(/^F) 

**/* वर्तमान कार्यशील निर्देशिका के हर बच्चे को नोड के लिए विस्तार होगा और () एक ग्लोब क्वालीफायर है। / निर्देशिकाओं के लिए मैचों को प्रतिबंधित करता है, और F गैर-खाली वाले संदेशों को प्रतिबंधित करता है। ^ के साथ इसे नकारात्मक करने से हमें सभी खाली निर्देशिकाएं मिलती हैं। अधिक जानकारी के लिए zshexpn मैन पेज देखें।

1

-empty खाली पत्ता डीआईआर की रिपोर्ट करता है। आप खाली पेड़ लगाने के लिए चाहते हैं, तो पर एक नजर है: http://code.google.com/p/fslint/source/browse/trunk/fslint/finded

ध्यान दें कि स्क्रिप्ट अन्य सहायता स्क्रिप्ट के बिना इस्तेमाल नहीं किया जा सकता, लेकिन आप fslint स्थापित करने और इसे सीधे उपयोग कर सकते हैं?

1

तुम भी उपयोग कर सकते हैं:

find . -type d -links 2 

। और .. दोनों फाइलों के रूप में एक लिंक के रूप में गिनती हैं।

0

पिमिन कॉन्स्टेंटिन केफलाउ का जवाब फ़ोल्डर्स को केवल 2 लिंक और अन्य फाइलों (डी, एफ, ...) के साथ प्रिंट करता है। आप नाम है के साथ रिक्त स्थान "$ निर्देशिका" में उद्धरण चिह्नों का उपयोग

for directory in $(find . -type d); do 
    if [ -n "$(find $directory -maxdepth 1 -type f)" ]; then echo "$directory" 
    fi 
done 

:

सबसे आसान तरीका मैं पाया है है।

आप प्रतिस्थापित कर सकते हैं। आपके संदर्भ फ़ोल्डर द्वारा।

मैं इसे एक खोज निर्देश के साथ करने में सक्षम नहीं हूं।

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