2009-03-24 9 views
4

ich den Befehl erfolglos bekommen die Größe von Verzeichnissen erhalten (Dateien gehören innerhalb der Größe eines Verzeichnisses)Kann nicht die Größe eines Verzeichnisses von ls

ls -lSrh 

ich Kilobit nur für die Größe Verzeichnisse, während ihr Inhalt mehr ist.

Wie können Sie die Größe der Verzeichnisse einschließlich ihres Inhalts in der Anzahl von ls?

Antwort

20
du -sh directory_name 

ls wird die Größe des Verzeichnisses Eintrag, nicht der Verzeichnisinhalte geben. Basierend auf meinem schnellen Skim von man ls scheint es kein Weg zu sein, ls zu tauchen und die Größe der Verzeichnisse zu berechnen (am wahrscheinlichsten, weil es eine teure Operation wäre).

+0

Und auf jedem Geschmack von ls verfügbar unter Windows (Ich habe Cygwin, GnuWin32 und MSYS überprüft), Verzeichnisse haben alle null Größe. Sie sehen nicht einmal die Größe der Liste der Verzeichniseinträge wie in den (meisten?) * Nix-Varianten. – RBerteig

+0

Ich habe keine Option gefunden, um die Verzeichnisse der Größe entsprechend zu ordnen. Wie können Sie das tun? –

+0

Das ist ashawley

3

Wenn Sie Verzeichnisse Größe erhalten möchten, können Sie

du -sh 
1

du -hs groß verwenden ist, bis Sie ein großes Verzeichnis haben.

Zum Beispiel, wenn Sie Cache-Dateien (zum Beispiel den Dateisystem-Cache-Speicher für Rails) oder hochgeladene Dateien speichern, ... mit einem partitionierten Schema, wie "cache/123/456/789/real_files" und Sie haben eine Menge sie, du dauert ewig, schließlich blockiert alle IO.

Ich habe keine bessere Lösung, aber dies ist in Betracht zu ziehen, bevor Sie dies auf dem Produktionsserver während der Spitzenzeit ausführen.

1

Aufbauend auf Sean Bright Antwort Sie die folgende (in BASH) tun können

for each in $(echo */ | sed "s/ /\n/g" | sed "s/\///g"); do du -hs "$each"; done; 

Dies wird einen vollständigen Verzeichnisinhalt für all Verzeichnisse im aktuellen Verzeichnis.