Kann nicht die Größe eines Verzeichnisses von ls erhalten
Frage
ich den Befehl erfolglos die Größe von Verzeichnissen zu erhalten (Dateien innerhalb gehören zu der Größe eines Verzeichnisses)
ls -lSrh
ich Kilobit nur für die Größe der Verzeichnisse, während ihr Anteil mehr als das ist.
Wie kann man die Größe der Verzeichnisse einschließlich deren Inhalt in der Anzahl von ls
Lösung
du -sh directory_name
ls
wird die Größe des Verzeichnisses geben Eintrag , nicht der Verzeichnisinhalt. Basierend auf meiner schnellen Skim von man ls
es scheint keinen Weg, um ls
Tauchgang nach unten und berechnet die Größe der Verzeichnisse zu machen (wahrscheinlich, weil es eine teuere Operation sein würde).
Andere Tipps
Wenn Sie Verzeichnisse Größe erhalten möchten, können Sie
du -sh
du -hs
ist groß, bis Sie ein großes Verzeichnis haben.
Zum Beispiel, wenn Sie Cache-Dateien speichern (zum Beispiel des Dateisystem-Cache-Speicher für Rails) oder hochgeladenen Dateien, ... mit einem partitionierten Schema, wie „Cache / 123/456/789 / real_files“ und Sie haben eine Menge von ihnen , du
nimmt für immer, schließlich alle IO blockiert wird.
Ich habe nicht eine bessere Lösung habe, aber dies ist in Betracht gezogen werden, bevor Sie diese auf Produktionsserver während der Spitzenzeit ausgeführt werden.
Aufbauend auf Sean Bright Antwort Sie die folgenden (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.