Grrr, das Kommentieren erfordert 50 Wiederholungen. Diese Antwort ist eigentlich ein Kommentar zu Chris 'Antwort.
Da dem Fragesteller wahrscheinlich nicht alle Verzeichnisse wichtig sind, sondern nur die schlechtesten, ist die Verwendung von sort wahrscheinlich sehr teuer.
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
Dies ist nicht so vollständig wie Ihre Version, aber dies bewirkt, dass Zeilen gedruckt werden, wenn sie größer als das vorherige Maximum sind, wodurch die Menge der ausgedruckten Geräusche erheblich reduziert und die Kosten für die Sortierung gespart werden.
Der Nachteil davon ist, wenn Sie 2 sehr große Verzeichnisse haben und das erste zufällig 1 mehr Inode als das zweite hat, werden Sie das zweite nie sehen.
Eine vollständigere Lösung wäre, ein intelligenteres Perl-Skript zu schreiben, das die Top-10-Werte protokolliert und diese am Ende ausgibt. Aber das ist zu lang für eine schnelle Antwort auf einen Serverfehler.
Außerdem können Sie mit einem etwas schlaueren Perl-Skript die while-Schleife überspringen - auf den meisten Plattformen sortiert ls die Ergebnisse, was auch für große Verzeichnisse sehr teuer sein kann. Die Sortierung ls ist hier nicht erforderlich, da uns nur die Zählung am Herzen liegt.