Diese Frage hat hier bereits eine Antwort:
Welchen Befehl verwende ich, um die Größe aller Dateien (rekursiv) in einem Linux- oder Mac OS X-Verzeichnis zu ermitteln?
linux
macos
mac
command-line
Daryl Spitzer
quelle
quelle
-k
Option verwenden, um eine Blockgröße von 1 KB zu verwendendu
, wie ich es benutzencdu
, können Sie den Verweis hier finden, remysharp.com/2018/08/23/cli-improvedAntworten:
Die
du
in OS X verwendete BSD-Version gibt die Größe mit 512-Byte-Blöcken an - die Größen werden im Wesentlichen auf den nächsten 512-Byte-Wert aufgerundet. Hier sehen Sie den Speicherplatz auf der Festplatte, der größer ist als die Datenmenge. Wenn Sie viele kleine Dateien haben, kann der Unterschied groß sein.Hier ist ein Beispiel.
Dies ist der Wert bei regular
du
. Es ist in 512-Byte-Blöcken:Das
-h
Flag führt zu einer besser lesbaren Zahl in Kilobyte. Wie erwartet ist es die Hälfte der Anzahl von 512-Byte-Blöcken:Schließlich können Sie
find
und verwendenawk
, um die Summe der tatsächlichen Bytes in den Dateien anzuzeigen. Das ist ein bisschen langsam, aber es funktioniert:Dieser Wert stimmt genau mit der Zahl überein, die im Finder-Fenster "Informationen" angezeigt wird. (Es gibt keine seltsamen Gabeln oder Xattrs in diesem Satz von Dateien.) Er ist erheblich kleiner als der von gemeldete Wert
du
.So funktioniert es: Es wird eine Liste aller Dateien abgerufen und an übergeben
ls -l
. Dannawk
werden die Bytes hochgezählt. Das-type f
Flag ist dort, damit nur Dateien (und keine Verzeichnisse) gesendet werdenls
. Ohne dieses Flag werden auch Verzeichnisnamen an gesendetls
, und jede Datei wird zweimal aufgelistet: einmal als einzelne Datei und einmal als Element im Verzeichnis.Die GNU-Version von
du
kann Werte in tatsächlichen Bytes anstelle von Blöcken angeben. Leider ist die BSD-Version vondu
nicht so flexibel.quelle
du
von GNU coreutils mit der-b
Option ein anderes Ergebnis als mit Ihrerfind
Pipe. Für ein 36 GB Verzeichnis erhalte ich einen Unterschied von 82 KB.Zeigt die Größe einer einzelnen Datei an
du -h path_to_a_file
Zeigen Sie die Größe des Inhalts eines Verzeichnisses, jedes Unterverzeichnisses und jeder einzelnen Datei an:
du -h path_to_a_directory
Zeigen Sie die Größe des Inhalts eines Verzeichnisses an:
du -sh path_to_a_directory
quelle
du -sch
wenn Sie etwas leichter lesbar wollen.du - teilt der Festplatte mit, dass sie nicht die Dateigröße verwendet .
der obige terminal code (im on osx 10.6) bietet für mich das beste ergebnis und ist waaay schneller als "find ... -exec"
ein schneller Benchmark
quelle
find . -type f -print0 | xargs -0 stat -c%s | awk '{b+=$1} END {print b}'
Sie können verwenden,
du -ah .
welche Größen aller Dateien und Verzeichnisse rekursiv angezeigt werden.Dies kann mit kombiniert werden
sort
, sodass die 20 größten Verzeichnisse im aktuellen Ordner angezeigt werden:Hinweis: Die Option
-h
fürsort
ist unter OSX / BSD nicht verfügbar. Sie müssen alsosort
voncoreutils
(z. B. überbrew
) installieren und den bin-Pfad aufPATH
z. B. anwendenAnsonsten verwenden Sie:
quelle
brew install coreutils
, andernfalls verwenden Sie den BSD-Befehl sort am Ende without-h
.Ich habe alle Ihre Ansätze kombiniert und mit einer vom Menschen lesbaren Ausgabe kombiniert. Das Ergebnis ist:
Link zum Inhalt: https://gist.github.com/mlegenhausen/9365461
quelle