ls -l
gibt Ihnen die scheinbare Größe der Datei an, d. h. die Anzahl der Bytes, die ein Programm lesen würde, wenn es die Datei von Anfang bis Ende lesen würde. du
würde Ihnen die Größe der Datei "auf der Festplatte" geben.
Standardmäßig du
gibt Ihnen die Größe der Datei in Anzahl der Plattenblöcke an, aber Sie können -h
verwenden um stattdessen eine menschenlesbare Einheit zu erhalten. Siehe auch Handbuch für du
auf Ihrem System.
Beachten Sie das mit du
von GNU coreutil (was Sie wahrscheinlich unter Linux haben), -b
Um Bytes zu erhalten, ist --apparent-size
erforderlich Möglichkeit. Dies ist nicht das, was Sie verwenden möchten, um die Anzahl der tatsächlich auf der Festplatte verwendeten Bytes zu ermitteln. Verwenden Sie stattdessen --block-size=1
oder -B 1
.
Mit GNU ls
, können Sie auch ls -s --block-size=1
ausführen auf der Datei. Dies ergibt dieselbe Nummer wie du -B 1
für die Datei.
Beispiel:
$ ls -l file
-rw-r--r-- 1 myself wheel 536870912 Apr 8 11:44 file
$ ls -lh file
-rw-r--r-- 1 myself wheel 512M Apr 8 11:44 file
$ du -h file
24K file
$ du -B 1 file
24576 file
$ ls -s --block-size=1 file
24576 file
Dies bedeutet, dass es sich um eine 512-MB-Datei handelt, die etwa 24 KB auf der Festplatte belegt. Es ist ein sparse Datei (meistens Nullen, die nicht wirklich auf die Festplatte geschrieben werden, sondern als logische "Löcher" in der Datei dargestellt werden). Sparse-Dateien sind üblich, wenn mit vorab zugewiesenen großen Dateien gearbeitet wird, z. Disk-Images für virtuelle Maschinen oder Auslagerungsdateien usw. Das Erstellen einer Sparse-Datei ist schnell, während das Füllen mit Nullen langsam (und unnötig) ist.
Siehe auch das Handbuch für fallocate
auf Ihrem Linux-System.
Ich erhalte die Dateigröße in Bytes wie folgt:
actualsize=$(du -b "${file}" | cut -f 1)