Ich suche einen praktischen Einzeiler für die Berechnung der durchschnittlichen Dateigröße in einem Verzeichnis.
Was ich will ist:
Größe aller Dateien / Anzahl der Dateien im Verzeichnis
bash
command-line
Taffer
quelle
quelle
Antworten:
Mit FreeBSD / Mac OS X
find
,stat
undawk
(nicht gerade ein handliches Einzeiler obwohl):quelle
-v var=value
,awk
wird ANSI - C - Sequenzen erweitern , wie\n
,\r
... Während Schalen Export zu tunPWD
, so dass Sie verwenden können ,ENVIRON["PWD"]
inawk
denen diese Art von Problem für Verzeichnisse haben Schrägstriche in ihrem Namen.find . -type f -exec stat -f%z {} +|awk '{s+=$0}END{print s/NR}'
.Mit GNU finden:
Oder für die Festplattennutzung:
Beachten Sie, dass bei mehreren Hardlinks derselben Datei die Festplattennutzung mehrmals gezählt wird.
Das Obige zählt nur reguläre Dateien, keine Symlinks oder Verzeichnisse oder andere spezielle Dateien. Es enthält versteckte Dateien.
Das selbe mit
zsh
Builtins:quelle
Eine vereinfachende Lösung in einer Zeile:
Es enthält einen syntaktischen Cheat, der nur
ls
Ausgabezeilen berücksichtigt , die mit '-' beginnen und Daten für reguläre Dateien darstellen sollten.quelle
Für nur Dateien in einem Verzeichnis werden Unterverzeichnisse ignoriert:
Oder um alle Dateien einschließlich der Dateien in Unterverzeichnissen zu zählen:
quelle
du -s
addiert die Festplattennutzung (nicht die Größe) aller Dateien und Verzeichnisse und anderer nicht regulärer Dateien , ausgenommen zusätzliche feste Links zu derselben Datei, währendfind
alle regulären Dateien gezählt werden. Außerdem werden Dateinamen mit Zeilenumbrüchen mehrmals gezählt.du -S
ist GNU-spezifisch.du -s
meldet je nach Betriebssystem Sektoren oder Kilobyte.