Grrr, टिप्पणी करने के लिए 50 प्रतिनिधि की आवश्यकता होती है। तो यह जवाब वास्तव में क्रिस के जवाब पर एक टिप्पणी है।
चूंकि प्रश्नकर्ता शायद सभी निर्देशिकाओं के बारे में परवाह नहीं करता है, केवल सबसे बुरे लोग हैं, तो सॉर्ट का उपयोग करना बहुत महंगा ओवरकिल है।
find . -type d |
while
read line
do
echo "$(ls "$line" | wc -l) $line"
done |
perl -a -ne'next unless $F[0]>=$max; print; $max=$F[0]' | less
यह आपके संस्करण के रूप में पूर्ण नहीं है, लेकिन यह क्या है प्रिंट लाइनें हैं यदि वे पिछले अधिकतम से बड़े हैं, तो बाहर मुद्रित शोर की मात्रा को काफी कम कर देते हैं, और प्रकार के खर्च को बचाते हैं।
इसका नकारात्मक पक्ष यह है कि यदि आपके पास 2 बहुत बड़ी निर्देशिकाएं हैं, और पहली बार 2 की तुलना में 1 अधिक इनकोड होता है, तो आप कभी भी दूसरा नहीं देखेंगे।
एक अधिक पूर्ण समाधान एक उत्कृष्ट पर्ल स्क्रिप्ट लिखना होगा जो शीर्ष 10 मूल्यों को देखे जाने पर नज़र रखता है, और अंत में उन्हें प्रिंट करता है। लेकिन यह एक त्वरित सर्वरफॉल्ट उत्तर के लिए बहुत लंबा है।
इसके अलावा, कुछ मिडिल होशियार पर्ल स्क्रिप्टिंग आपको लूप को छोड़ देती है - अधिकांश प्लेटफार्मों पर, एलएस परिणाम को सॉर्ट करते हैं, और यह बड़ी निर्देशिकाओं के लिए बहुत महंगा भी हो सकता है। एलएस सॉर्ट यहां आवश्यक नहीं है, क्योंकि हम सभी के बारे में ध्यान रखते हैं कि गिनती है।