Grrr, comentar requer 50 repetições. Portanto, esta resposta é na verdade um comentário sobre a resposta de chris.
Como o questionador provavelmente não se importa com todos os diretórios, apenas com os piores, o uso da classificação provavelmente é um exagero muito caro.
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
Isso não é tão completo quanto a sua versão, mas o que isso faz é imprimir linhas se elas forem maiores que o máximo anterior, reduzindo bastante a quantidade de ruído impressa e economizando as despesas da classificação.
A desvantagem disso é que, se você tiver 2 diretórios muito grandes, e o primeiro tiver 1 inode a mais que o 2º, você nunca verá o 2º.
Uma solução mais completa seria escrever um script perl mais inteligente que monitore os 10 principais valores vistos e os imprima no final. Mas isso é muito longo para uma resposta rápida à falha do servidor.
Além disso, alguns scripts perl mais inteligentes permitem que você pule o loop while - na maioria das plataformas, ls classifica os resultados e isso também pode ser muito caro para diretórios grandes. O tipo ls não é necessário aqui, pois tudo o que importa é a contagem.