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?
Antworten
Zu viele Anzeigen?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 .
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.
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 umSIZE
bevor sie gedruckt werden; e'--block-size=M'
druckt Größen in Einheiten o 1.048.576 Bytes; sieheSIZE
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).
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