Angenommen, ich möchte die Größe jedes Verzeichnisses eines Linux-Dateisystems ermitteln. Wenn ich benutze, ls -la
erhalte ich nicht wirklich die zusammengefasste Größe der Ordner.
Wenn ich benutze, df
bekomme ich die Größe jedes gemounteten Dateisystems, aber das hilft mir auch nicht. Und mit du
bekomme ich die Größe jedes Unterverzeichnisses und die Zusammenfassung des gesamten Dateisystems.
Ich möchte aber nur die zusammengefasste Größe jedes Verzeichnisses im ROOT-Ordner des Dateisystems haben. Gibt es einen Befehl, um das zu erreichen?
--total
Flagge war hilfreich für mich. Egdu -sh --total applications/*
. askubuntu.com/a/465436/48214Antworten:
Das macht was Sie suchen:
Was das bedeutet:
-s
Geben Sie nur die Summe für jedes Befehlszeilenargument an.-h
für lesbare Suffixe wieM
für Megabyte undG
für Gigabyte (optional)./*
Erweitert einfach auf alle Verzeichnisse (und Dateien) in/
.Hinweis: Punktedateien sind nicht enthalten. laufen
shopt -s dotglob
, um diese auch einzuschließen.Auch nützlich ist das Sortieren nach Größe:
Hier:
-h
stellt sicher, dasssort
die lesbaren Suffixe korrekt interpretiert werden.quelle
shopt -s dotglob
, um sie in die Zählung aufzunehmen./*
, z. B../
für das aktuelle Verzeichnis oder./*
für jedes Element im aktuellen Verzeichnis../*/
, um nur Unterordner und nicht alle Elemente zu erhaltendu -sh /* | sort -h
sort
dies nicht der Fall ist-h
, müssen Sie es ebenfalls auslassendu
, da sonst die Sortierung Kilo / Mega / Gigabyte vertauscht.du -s /* | sort -nr
.Ich muss oft die größten Verzeichnisse finden, um eine sortierte Liste mit den 20 größten Verzeichnissen zu erhalten:
In diesem Fall werden die Größen in Megabyte angegeben.
quelle
Ich verwende dafür gerne Ncdu . Sie können den Cursor verwenden, um durch die Verzeichnisstruktur zu navigieren und einen Drilldown durchzuführen. Es funktioniert wirklich gut.
quelle
b
, um in eine Shell im Verzeichnis abzulegen.Die vorhandenen Antworten sind sehr hilfreich, vielleicht finden auch Anfänger (wie ich) dies hilfreich.
Sehr einfache Schleife, aber für mich war dies ein guter Anfang für einige andere Operationen im Zusammenhang mit der Größe:
Sehr ähnlich wie die erste Antwort und fast dasselbe Ergebnis wie 1.), aber ich habe einige Zeit gebraucht, um den Unterschied von * zu ./* zu verstehen, wenn in einem Unterverzeichnis:
quelle
for each
funktioniert nicht, da Konsolenzeichen (z. B.\033[
) an diefor each
. es wird nicht funktionierenDer folgende
du
Aufruf sollte auf BSD-Systemen funktionieren:quelle
du
(Ubuntu 10.4) hat keine-d
Option. Auf welchem System bist du?du -sk /*
. Ich hasse das-k
Zeug soooo sehr. Linux-h
rockt total.--max-depth
Das ist nicht einfach. Der
du
Befehl zeigt entweder Dateien und Ordner (Standard) oder nur die Größe aller Elemente an, die Sie in der Befehlszeile angeben (Option-s
).So erhalten Sie die größten Elemente (Dateien und Ordner) sortiert und in lesbaren Größen unter Linux:
Dies wird Sie in einer Tonne von kleinen Dateien begraben. Sie können sie mit
--threshold
(1 MB in meinem Beispiel) loswerden :Der Vorteil dieses Befehls ist, dass er versteckte Punktordner enthält (Ordner, die mit beginnen
.
).Wenn Sie die Ordner wirklich nur benötigen, müssen Sie sie verwenden.
find
Dies kann jedoch sehr, sehr langsam sein, dadu
viele Ordner mehrmals gescannt werden müssen:quelle
du
Beachten Sie, dass Sie Verzeichnisse nicht mit auf verschiedenen Systemen / Maschinen vergleichen können, ohne sicherzugehen, dass beide die gleiche Blockgröße des Dateisystems haben. Dies kann zählen, wenn Sie einige Dateien von einem Linux-Computer auf einen NAS synchronisieren und das synchronisierte Verzeichnis selbst vergleichen möchten. Sie erhalten möglicherweise unterschiedliche Ergebnissedu
aufgrund unterschiedlicher Blockgrößen.quelle
Vielleicht möchten Sie auch xdiskusage ausprobieren . Gibt Ihnen die gleichen Informationen, wird jedoch grafisch angezeigt und ermöglicht einen Drilldown (sehr nützlich). Es gibt andere ähnliche Dienstprogramme für KDE und sogar für Windows.
quelle
Sie könnten
ls
in Verbindung mit verwendenawk
:Der Ausgang von
ls
wird zu geleitetawk
.awk
Startet die Verarbeitung der Daten. Das Standardtrennzeichen ist Leerzeichen. Die Summenvariabletot
wird auf Null initialisiert; Die folgende Anweisung wird für jede Zeile / Zeile ausgeführt, die von ausgegeben wirdls
. Es erhöht sich lediglichtot
mit der Größe.$5
steht für fünfte Spalte (ausgegeben vonls
). Am Ende dividieren wir durch (1024 * 1024), um in Megabyte zu summieren.Wenn Sie dies in ein Skript oder eine Funktion (.bashrc) konvertieren möchten, können Sie damit auch die Größe bestimmter Untergruppen von Verzeichnissen nach Dateitypen ermitteln.
Wenn Sie systemweite Informationen wünschen,
kdirstat
können Sie sich als nützlich erweisen!quelle