Verständnisfrage zu ls -l -R , du -b , bits und bytes...

systen

Cadet 1st Year
Registriert
März 2008
Beiträge
10
Hallo,

da mir die Ornergröße in Gnome 'Properties' zu ungenau war (4.3 GB, das sind ja auch nur die Items)
(Eigentlich um die Datengröße auf einer gebrannten DVD zu ermitteln)
wollte ich mal nachschauen wie groß die Ordner genau sind.

Dazu habe ich bisher folgende Methoden gefunden:

ls -R -l -a ORDNER| tr -s " " | cut -d " " -f 5 | awk '{ sum+=$0; } END { printf("%d\n",sum); }'
das zählt offensichtlich alles zusammen, die Ordner kosten ja auch Platz, oder?

liefert bei ORDNER etwas mehr als:

du ORDNER -b | awk '{ sum+=$0; } END { printf("%d\n",sum); }'

(ist aber bei einem kleinen Testordner noch irgenwie relistisch)

du ORDNER -b -c ist wohl richtig

...mit dem Effekt das ich merke, dass ich nicht weiß was da läuft.

Noch dazu hat Windows bei der DVD (Natürlich unter Qemu)
4,28 GB (4.603.050.114 Bytes) für die Ordnergröße
(4,30 GB (4.618.467.328 Bytes) für die Größe auf dem Datenträger)

du * -b -c liefert aber 4.605.933.698

wobei
du und ls (wie oben) beide 2.147.483.647
ausgeben.



Wenn gerade jemand dafür Zeit hat.

Grüße
 
die datenträgergröße der DVD ist immer größer als die summe der einzelnen dateien (unmanipuliertes dateisystem vorausgesetzt).
dass du mehr anzeigt als die summe der einzelnen dateigrößen ist dadurch zu begründen, dass die größe der verzeichnisse auf dem datenträger mit einbezieht.
du ./ gibt auch dann eine größe an, wenn gar keine datei im verzeichnis ist, nämlich die des verzeichnis .

hinweis zu ls -s: wenn du damit arbeitest kommt es zwangsläufig dazu, dass das verzeichnis .. in die summe mit einbezogen wird!!
 
Danke.

Hier ein Beispiel, ein kleiner, verschachtelter Ordner, genannt Test1:

$ ls -R -l -a Test1
liefert das:
Test1:
total 3864
drwxr-xr-x 3 systen systen 4096 2008-03-31 16:59 .
drwxr-xr-x 11 systen systen 4096 2008-03-31 17:17 ..
-rwxrwx--- 1 systen systen 3939812 2001-09-22 21:37 Anton_Aus_Tirol.mp3
drwxr-xr-x 2 systen systen 4096 2008-03-31 17:01 Test2

Test1/Test2:
total 108
drwxr-xr-x 2 systen systen 4096 2008-03-31 17:01 .
drwxr-xr-x 3 systen systen 4096 2008-03-31 16:59 ..
-rw-r--r-- 1 systen systen 97280 2008-03-31 17:01 Anton_Aus_Tirol.xls

$ ls -R -l -a Test1| tr -s " " | cut -d " " -f 5 | awk '{ sum+=$0; } END { printf("%d\n",sum); }'
liefert die Summe:
4057572
korrekt

du Test1 -b-c
liefert aber:
101376 Test1/Test2
4045284 Test1
4045284 total

da fehlen 3 x 4096 und das verstehe ich nicht ganz.
 
Zuletzt bearbeitet:
Nur so nebenbei, du musst bei ls nicht bei jedem Parameter ein "-" davorsetzen.
ls -R -l -a Test1
=
ls -Rla Test1

Erspart einem ein wenig Schreibarbeit. ;)
 
Schön, so werden Kommandozeilen ja fast genau so einfach wie Icons anklicken ; )

Im übrigen reicht oben auch:

ls -R -l -a Test1| awk '{ sum+=$5; } END { printf("%d\n",sum); }'

ls -R -l -a Test1| tr -s " " | cut -d " " -f 5 | awk '{ sum+=$0; } END { printf("%d\n",sum); }'

cut -d " " -f 5 legt es nur auf $0
 
Zurück
Oben