Wie kann ich die Größe eines Verzeichnisses berechnen?

181

Wie erkenne ich die Größe eines Verzeichnisses? Einschließlich Unterverzeichnisse und Dateien.

Juanjo Conti
quelle

Antworten:

230
du -s directory_name

Oder um eine vom Menschen lesbare Ausgabe zu erhalten:

du -sh directory_name

Die -sOption führt nicht die Größe für jedes Unterverzeichnis auf, sondern nur die Gesamtgröße.

sepp2k
quelle
7
Eigentlich duist Standardeinheit ist 512-Byte - Blöcke gemäß POSIX und Kilobyte auf Linux (es sei denn , die Umgebungsvariable POSIXLY_CORRECTgesetzt ist) , oder mit du -k.
Gilles
3
@ Gilles: Guter Fang. Ich habe das Bit "Anzahl der Bytes" aus meiner Antwort entfernt.
12.
1
arbeitete wie vorgeschrieben
Skidadon
1
Wenn das Verzeichnis sehr groß ist und viele Unterverzeichnisse hat, braucht es viel Zeit ... fast 1 Minute. Ist das normal? Gibt es eine Möglichkeit, die Größe schneller zu ermitteln?
Yeahman
2
Ich musste die Größe meines Ordners "bag" berechnen, du -sh baghat perfekt funktioniert!
António Almeida
7

Während die Verwendung eines separaten Pakets wie ncdu gut funktioniert, kann der gleiche Vergleich vieler Ordner bis zu einem gewissen Grad durchgeführt werden, indem nur eine Liste von Ordnern zum Vergrößern angegeben wird. Zum Beispiel, um Verzeichnisse der obersten Ebene auf Ihrem System zu vergleichen ...

cd /    
sudo du -sh ./*
NFlourish
quelle
2
du -sh /*
Einfacher
7

GNU dunimmt eine -bOption.

Weitere Hilfe finden Sie auf der manSeite und auf der infoSeite :

-b, --bytesEntspricht--apparent-size --block-size=1

user2573436
quelle
1
du -csh

-c ergibt Gesamtsumme

Kalpesh Soni
quelle
1
Das -cergibt keinen Sinn, zusammen mit zu verwenden -s, oder? -sZeigt nur die Größe des angegebenen Verzeichnisses an, dh die Gesamtgröße des Verzeichnisses.
Andreas Storvik Strauman
1

Versuchen

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

Dies hilft dabei, große Verzeichnisse zu finden, die dann mit durchsucht werden können du -sh ./*

Rollinjack
quelle
0

Sie können auch ls -ldh verwenden:

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-l ist für lange Auflistung; -d dient zum Anzeigen von dir-Informationen, nicht des Inhalts des Verzeichnisses. -h dient zum Anzeigen der Größe in einem von huma lesbaren Format.

fromnaboo
quelle
4
Dies ist nicht korrekt, die fragende Person sucht eindeutig nach dem Footprint eines Verzeichnisses und dessen Inhalt auf der Festplatte. Die Antwort von @ sepp2k ist richtig.
Blong
1
Der Befehl ls -ldh zeigt nur die Größe der Inode-Struktur eines Verzeichnisses an. Die Metrik spiegelt die Größe der Indextabelle der Dateinamen wider, nicht jedoch die tatsächliche Größe des Dateiinhalts im Verzeichnis.
Linbianxiaocao
0

Ich installiere immer das "ncdu" -Paket und sehe die gesamte Ausgabe aller Verzeichnisse mit grafischer Darstellung. Dies liegt daran, dass ich normalerweise wissen muss, was den meisten Speicherplatz auf meinen Computern belegt, unabhängig davon, wie viel ein einzelnes Verzeichnis zusammenfasst.

Verwendung: sudo ncdu /(Sie benötigen keine sudoOrdner, für die Sie Leseberechtigung haben).

Das Durchsuchen der Datenträgernutzungsstatistik für das gesamte Dateisystem dauert eine Weile. Es verfügt über eine schöne grafische Befehlszeilendarstellung und eine Tastaturnavigation mit den Pfeiltasten, z. B. tiefer oder höher in den gescannten Pfad. Sie können Elemente auch löschen, indem Sie drücken D.

Etescartz
quelle
0

Sie können "file-size.sh" aus der awk Velour-Bibliothek verwenden :

ls -ARgo "$@" | awk '{q += $3} END {print q}'
Steven Penny
quelle
0

du -hd1

listet in einem für Menschen lesbaren Format die Größen aller Verzeichnisse auf, z

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config
Boris Yakubchik
quelle
0

Ich habe es mit folgendem Befehl versucht, da bereits die beste Antwort geliefert wurde

sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

Ausgabe

 sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
Praveen Kumar BS
quelle