Ich bin vor kurzem auf dieses Problem gestoßen:
find /tmp/tmp33hn25wv -type f -exec stat --format='%s' {} + | awk '{s+=$1} END {print s}'
10420224
du -bs /tmp/tmp33hn25wv
12198004 /tmp/tmp33hn25wv
Die Ergebnisse sind durchweg unterschiedlich. Alle Dateien werden in Vielfachen der Blockgröße Byte geschrieben.
Woher kommtdudiese zusätzlichen Bytes finden? Ich verstehe, dass das Dateisystem mehr oder weniger Speicherplatz zum Speichern der Dateiinhalte benötigen kann, aber ich hoffte, dass diese -b
Option du
bedeutet, dass die „scheinbare“ Größe gezählt werden muss und nicht die vom Dateisystem verwendete Größe …
Antwort1
du
beinhaltet die Größe von Verzeichnissen. Wenn Sie -type d
die find
Kriterien ergänzen, erhalten Sie möglicherweise das gewünschte Ergebnis (ich mache das bei einem Verzeichnisbaum, der nur Standarddateien enthält):
find /tmp/tmp33hn25wv \( -type f -o -type d \) -exec stat --format='%s' {} + |\
awk '{s+=$1} END {print s}'
Es kann jedoch auch andere Dateitypen geben, die Speicherplatz beanspruchen. Versuchen Sie daher, die Typprüfung ganz wegzulassen:
find /tmp/tmp33hn25wv -exec stat --format='%s' {} + | awk '{s+=$1} END {print s}'