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 дуже великі каталоги, і перший випадок має більше 1 вкладу, ніж 2-й, 2-го ви ніколи не побачите.
Більш повним рішенням було б написати розумніший сценарій perl, який відслідковує 10 найпопулярніших значень та виводить їх у кінці. Але це занадто довго для швидкої відповіді сервера за замовчуванням.
Крім того, деякі з розумніших сценаріїв perl дозволять вам пропустити цикл часу - на більшості платформ ls сортує результати, і це також може бути дуже дорогим для великих каталогів. Сортування ls тут не потрібне, оскільки все, що нас хвилює, - це кількість.