588 Stimmen

Linux-Befehl zur Ermittlung der Größe von Dateien und Verzeichnissen in einem bestimmten Ordner?

Wie kann ich die Größe von Dateien und Verzeichnissen in Linux anzeigen? Wenn Sie df -m dann wird die Größe des gesamten Verzeichnisses auf der obersten Ebene angezeigt, aber wie kann ich die Größe der Verzeichnisse und Dateien innerhalb des Verzeichnisses überprüfen?

34voto

Ravichandra Punkte 1972

Dateigröße in MB

ls -l --b=M  filename | cut -d " " -f5

Dateigröße in GB

ls -l --b=G  filename | cut -d " " -f5

34voto

Claudio Guirunas Punkte 3012

Wechseln Sie in das gewählte Verzeichnis und führen Sie es aus:

$ du -d 1 -h

wo:

-d 1 is the depth of the directories

-h is the human-readable option

Du wirst es sehen:

0   ./proc
8.5M    ./run
0   ./sys
56M ./etc
12G ./root
33G ./var
23M ./tmp
3.2G    ./usr
154M    ./boot
26G ./home
0   ./media
0   ./mnt
421M    ./opt
0   ./srv
2.6G    ./backups
80G .

19voto

Adi Punkte 2024

Ls -l --block-size=M liefert Ihnen eine Auflistung im Langformat (erforderlich, um die Dateigröße zu sehen) und rundet die Dateigrößen auf die nächsten MiB auf.

Wenn Sie MB (10^6 Bytes) anstelle von MiB (2^20 Bytes) Einheiten wünschen, verwenden Sie stattdessen --block-size=MB.

Wenn Sie das Suffix M nicht an die Dateigröße anhängen wollen, können Sie etwas wie --block-size=1M verwenden. Vielen Dank an Stéphane Chazelas für diesen Vorschlag.

Dies ist in der Manpage für ls beschrieben; man ls und suchen Sie nach SIZE. Es erlaubt auch andere Einheiten als MB/MiB und so wie es aussieht (ich habe es nicht ausprobiert) auch beliebige Blockgrößen (so dass man die Dateigröße als Anzahl von 412-Byte-Blöcken sehen kann, wenn man will).

Beachten Sie, dass der Parameter --block-size eine GNU-Erweiterung zu ls der Open Group ist, so dass dies möglicherweise nicht funktioniert, wenn Sie kein GNU-Userland haben (was bei den meisten Linux-Installationen der Fall ist). Das ls von GNU coreutils 8.5 unterstützt --block-size wie oben beschrieben.

19voto

Giorgos Myrianthous Punkte 29317

Alles was Sie brauchen ist -l y --block-size Flaggen

Größe aller Dateien und Verzeichnisse im Arbeitsverzeichnis (in MBs)

ls -l --block-size=M

Größe aller Dateien und Verzeichnisse im Arbeitsverzeichnis (in GBs)

ls -l --block-size=G

Größe einer bestimmten Datei oder eines Verzeichnisses

ls -l --block-size=M my_file.txt
ls -l --block-size=M my_dir/

ls --help

-l ein langes Listenformat verwenden

--block-size=SIZE : Skalengrößen um SIZE bevor sie gedruckt werden; e '--block-size=M' druckt Größen in Einheiten o 1.048.576 Bytes; siehe SIZE untenstehendes Format

SIZE ist eine Ganzzahl und eine optionale Einheit (Beispiel: 10M ist 10*1024*1024). Die Einheiten sind K, M, G, T, P, E, Z, Y (Potenzen von 1024) oder KB, MB, ... (Potenzen von 1000).


13voto

Bruno Bronosky Punkte 60135

Wenn Sie es in einem Skript verwenden, benutzen Sie stat .

$ date | tee /tmp/foo
Wed Mar 13 05:36:31 UTC 2019

$ stat -c %s /tmp/foo
29

$ ls -l /tmp/foo
-rw-r--r--  1 bruno  wheel  29 Mar 13 05:36 /tmp/foo

So erhalten Sie die Größe in Bytes. Siehe man stat für weitere Ausgabeformatoptionen.

En OSX/BSD-Äquivalent ist:

$ date | tee /tmp/foo
Wed Mar 13 00:54:16 EDT 2019

$ stat -f %z /tmp/foo
29

$ ls -l /tmp/foo
-rw-r--r--  1 bruno  wheel  29 Mar 13 00:54 /tmp/foo

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X