Ich muss die Größe des Verzeichnisses im Terminal zum Signieren erhalten. Ich benutze folgenden Befehl:
du -s /path/to/dir
Ich multipliziere das Ergebnis mit der herkömmlichen UNIX-Blockgröße (512 Bytes) und erhalte die tatsächliche Verzeichnisgröße in Bytes. Das Dialogfeld "Get Info" des Finders zeigt jedoch die Größe an, die geringfügig kleiner ist als die mit dem Terminalbefehl berechnete. Und es scheint, dass es auf jedem Ordner / Bundle reproduzierbar ist. Was vermisse ich?
quelle
actual
oder zu findenapparent
. (Siehe auch meine aktualisierte Erklärung).Über Mac OS X und den Finder (in Snow Leopard, Version 10.6.8) ist mir Folgendes aufgefallen.
bash
(1)).Soweit ich gesehen habe, sind meine "quantifizierten" Zahlen dieselben wie die "quantifizierten" Zahlen im Finder .
BLOCKSIZE
in meiner Shell festgelegt habe, aber ich habe (jetzt ein wenig) beide Versionen getestet und die Standardwerte für$BLOCKSIZE
ergeben dieselben Werte.Das einzige, was ich sagen kann, ist, dass ich näher komme, indem ich nur Dateien zähle (also Verzeichnis ~ 'Dateisystem-Metaindex / Header' ~ Daten ausschließt) und dass das, was ich am nächsten bekomme, das Folgende ist.
du
(1) noch (gnu)gdu
(1) scheinen erweiterte Attribute zu zählen (xattr
)Und dann muss ich nur pun ‚Run den Pfad und die Mathematik‘
Frieden und gute Nacht diesmal fo'real.
quelle
Auf meinem Ubuntu-System
du -b file
gibt die Verwendung von ext4 die Größe einer tatsächlichen Datei in Byte unddu -b dir
die Größe der Datei (en) + Verzeichnis-Overhead in Byte an. In meinem Fall beträgt der Overhead ein Vielfaches von 4096 Byte.Dieser Overhead steigt mit zunehmender Anzahl von Dateien.
Hinweis: Auch wenn Dateien gelöscht werden, bleibt der Verzeichnis-Overhead auf der höheren Ebene, auf der er sich vor dem Löschen der Dateien befand.
Ich habe nicht versucht, einen Neustart durchzuführen, um festzustellen, ob er zurückgesetzt wird. In beiden Fällen bedeutet dies jedoch, dass die Verzeichnisgröße abhängig von den historischen Umständen variiert.
Das Zählen jeder Dateigröße ist möglicherweise die beste Option für einen genauen Wert der gesamten Dateigröße .
Das folgende Skript summiert alle Dateigrößen (in Bytes).
Wenn Sie unter OS X nicht die
-b
Option für 'du' haben, können Siestat
stattdessen verwenden. (Wenn Sie diese haben :) ... Die kommentierte Zeile zeigt die Ubuntu-stat
Alternative zudu -b
;quelle
du -b
und eine anderestat
. Ihr Skript ist in keiner Weise außerhalb von Linux portierbar.coreutils
, um die GNU-Version vondu
as zu erhaltengdu
. Es ist also nicht gerade portabel, kann aber für Benutzer unter OS X nützlich sein, um die GNU-Versionen einiger Kern-Utils zu erhalten.Summiere alle Dateien in einem Verzeichnis:
OSX:
find dir ! -type d -print0 | xargs -0 stat -f '%z' | awk '{sum += $1} END{print sum}'
Linux:
find dir ! -type d -printf "%s\n" | awk '{sum += $1} END{print sum}'
quelle