Die Größe des aktuellen Ordners mit dem Terminal anzeigen?

115

Ich möchte eine Liste der Ordner aus dem aktuellen Verzeichnis oder einen Ordner, den ich mit ihrer Größe angegeben habe.

Ich habe es mit du versucht, aber ich erhalte nur die Größe der von mir angegebenen Verzeichnisse (du ./f1), und ls zeigt die Größe der Ordner nicht an.

Wie mache ich das ohne Scripting?

kevin
quelle
nicht wie ein Idiot klingen, sondern 'man du';)
Jakub
5
Danke ;-) aber ich habe es schon versucht und konnte nichts finden. Und versuchen Sie es mit Googling du!
kevin

Antworten:

189

Wenn Sie alle Verzeichnisse im aktuellen Verzeichnis anzeigen möchten:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

So zeigen Sie sie von einem anderen Verzeichnis aus an:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

Wenn Sie sicherstellen möchten, dass Verzeichnisse mit Namen, die mit einem Punkt beginnen, enthalten sind, tun Sie dies shopt -s dotglob zuerst.

Dennis Williamson
quelle
Vielen Dank für die tollen Antworten, aber dies ist die einfachste. Ich habe das Ende meiner Tests vergessen.
kevin
1
Wobei -s zusammenfassen bedeutet, die Gesamtsumme anzeigen und -h für den Menschen lesbar bedeutet
wranvaud
Ordner nach Größe sortieren: du -s */ | sort -n.
Anton Tarasenko
1
@AntonTarasenko: Vom Menschen lesbare Größen sortieren
Dennis Williamson
1
@AntonTarasenko: shopt -s dotglob doc
Dennis Williamson
16

Auf einem Mac wird die Option --max-depth durch -d [depth] ersetzt. Um eine von Menschen lesbare Liste Ihres Root-Laufwerks plus 2 Ebenen tief zu sehen, verwenden Sie Folgendes:

du -hd 2 /* 

Hinweis: Mit diesem Befehl werden die beiden obersten Verzeichnisebenen von Ihrem Stammverzeichnis angezeigt. Dies beinhaltet das Überqueren einer Ebene in Ihren Volumes und listet die zusammenfassenden Größen jedes Verzeichnisses der obersten Ebene in jedem Ihrer angehängten Volumes auf. Je nachdem, was Sie angehängt haben, kann dieser Befehl einige Zeit in Anspruch nehmen.

jadik
quelle
12

Ein weiterer Ansatz ist die Option --max-depth.

du -h --max-depth=1 .

Listet alle Verzeichnisse und Dateien im aktuellen Ordner mit der Größe auf.

Tiefe 2 würde eine weitere Ordnerebene auflisten.

matthias krull
quelle
4
Auf dem Mac ist es du -hd 2 . für 2 Tiefenstufen.
Ryan
Ah ja. Und wahrscheinlich auch auf FreeBSD. Danke für die Information.
matthias krull
5

Versuchen:

$ du -s ./f1

oder

$ du -sh ./f1

für freundlicher lesbare Größen.

Doug Harris
quelle
2

$ du --max-depth=1 /var/www/ | sort -n -r

Andre Mesquita
quelle
3
Wenn Sie einer älteren Frage eine Antwort mit vorhandenen Antworten hinzufügen, empfiehlt es sich, zu erläutern, wie sich Ihre Antwort unterscheidet, und eine Erläuterung hinzuzufügen, damit es sich nicht nur um eine Befehlsantwort handelt.
Jason Aller
2
Können Sie Ihre Antwort erweitern, um zu erklären, was die Parameter bewirken?
fixer1234
1

Erwähnenswert ist die NCurses-Datenträgernutzung Shell-Befehl.

Ncdu ist ein Datenträgerverwendungsanalysator mit einer ncurses-Schnittstelle. Es ist   entwickelt, um Space Hogs auf einem Remote-Server zu finden, auf dem Sie keine haben   Das gesamte grafische Setup ist verfügbar, es ist jedoch auch ein nützliches Tool für die Installation   regelmäßige Desktop-Systeme. Ncdu soll schnell, einfach und benutzerfreundlich sein.   und sollte in der Lage sein, in jeder minimalen POSIX-ähnlichen Umgebung mit zu laufen   ncurses installiert.

Ray
quelle
1

Aufbauend auf der akzeptierten Antwort werden mit diesem Befehl die Größen der Ordner im Verzeichnis angezeigt. und listet sie auch nach Größe auf, damit Sie sie leichter interpretieren können:

$ du -sh */ | sort -rn
Ethan
quelle
0

Auf dem Mac können Sie die GNU (Linux) -Implementierung von installieren du mit Homebrew ( brew install coreutils ). Dann zum Beispiel:

gdu folder -shL --exclude=.git

woher

  • gdu ist der Name der GNU-Implementierung von du (Standardmäßig versteckt sich Homebrew nicht /usr/bin/du );
  • s Erzeugt eine Gesamtsumme für den angegebenen Ordner (weglassen, wenn die Aufschlüsselung angezeigt werden soll).
  • h gibt lesbare Größen aus;
  • L folgt symlinks;
  • --exclude=.git Schließt das Git-Verzeichnis im angegebenen Ordner aus (dies ist nur ein Beispiel).

Sie können weitere Ordner durch Hinzufügen ignorieren --exclude=blah. Sie können auch mehrere Ordner gleichzeitig angeben (z. B. gdu folder1 folder2 ... ), und in diesem Fall können Sie alle Zwischensummen mit der Option zu einer Größe zusammenfassen c.

Sheljohn
quelle
0

Hier ist ein POSIX-Skript, mit dem Folgendes funktioniert:

  • Eine Datei
  • Dateien
  • Ein Verzeichnis
  • Verzeichnisse
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Quelle

Steven Penny
quelle