Warum zeigt ls -lh nicht die Gesamtgröße aller Dateien und Verzeichnisse in jedem Verzeichnis an?

843
Igorio

Beispielsweise zeigt es den Kernel als 18M, den Ordner Applications jedoch als 3.8K an

BSD / Darwin

1

2 Antworten auf die Frage

3
Kirk

Laut der Manpage für ls:

List information about the FILEs (the current directory by default). 

lssoll die Größe der Dateien im Dateisystem anzeigen, nicht die Verwendung eines Verzeichnisses. duzeigt die Gesamtnutzung eines Dateisystemobjekts an.

Also lstun, was es tun soll. Während Ihr Applications-Verzeichnis Dateien enthalten kann, die mehr als 3.8K verwenden, ist das Applications-Verzeichnis selbst nur 3.8K auf der Festplatte.

1
JdeBP

Weil Sie nicht unter Windows sind, wo die Welt so tut, als hätten Verzeichnisse keine Platzkosten und alle Verzeichnisse sind null. (Einige Teile der Windows-Welt geben vor, dass die Größe eines Verzeichnisses die kumulative Größe aller im Verzeichnis enthaltenen Elemente ist.)

Bei Unices und Linux zeigt der ls -lBefehl die Größe des Verzeichnisses an, wenn ein Verzeichniseintrag angezeigt wird, der auf ein anderes Verzeichnis zeigt . Es zeigt, wie viel Speicherplatz tatsächlich für das Speichern der Einträge im Verzeichnis selbst vorgesehen ist. ls -lZeigt für jeden Verzeichniseintrag immer die Größe des Knotens an, auf den dieser Eintrag verweist, sei es eine Datei, ein symbolischer Link oder ein Verzeichnis.