Grrr, commenter nécessite 50 répétitions. Donc, cette réponse est en fait un commentaire sur la réponse de Chris.
Étant donné que le questionneur ne se soucie probablement pas de tous les répertoires, seulement des pires, alors l'utilisation du tri est probablement une exagération très coûteuse.
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
Ce n'est pas aussi complet que votre version, mais cela permet d'imprimer des lignes si elles sont plus grandes que le maximum précédent, ce qui réduit considérablement la quantité de bruit imprimé et économise les dépenses de tri.
L'inconvénient est que si vous avez 2 très gros répertoires et que le premier a 1 inode de plus que le 2e, vous ne verrez jamais le 2e.
Une solution plus complète serait d'écrire un script perl plus intelligent qui garde une trace des 10 premières valeurs vues et les imprime à la fin. Mais c'est trop long pour une réponse rapide de panne de serveur.
De plus, certains scripts perl moyennement plus intelligents vous permettraient de sauter la boucle while - sur la plupart des plates-formes, ls trie les résultats, et cela peut également être très coûteux pour les grands répertoires. Le tri ls n'est pas nécessaire ici, car nous nous soucions uniquement du nombre.