Durchschnittsgröße von Dateien in Ordner

Hallo,

gibt es unter Linux einen Befehl mit dem man sich die Durchschnittsgröße aller Dateien die sich in einem speziellen Ordner befinden, ausgeben kann?

Vielen Dank schon einmal im Voraus!

Freundliche Grüße und einen schönen Sonntag, Andy

Tut mir leid, da kann ich dir leider nicht weiter helfen.

Schöne Grüße
da Beda

Mit dem Befehl : ls -l kan man sich den inhalt eines Ordners anzeigen lassen. Es giebt auch Befehle um die Ausgabe eines Befehls direkt in eine Datei zu schreiben Die Datei auzuwerten dürfte dann kein Problem sein.
Leider kenne ich keinen direkten Befehl für deine Anforderung.
lg : morschtan

Hallo Andy,

so aus dem Stehgreif kenne ich keinen Befehl, der dir die mittlere Dateigröße anzeigt. Mittels „du“ kannst du den Gesamtspeicherplatzbedarf ermitteln und mittels „ls -lR | wc -l“ die Anzahl der Dateien, aber das ist wahrscheinlich nicht das, was du gesucht hast.
Ich denke, man könnte es auf der Kommandozeile mit einem find erreichen, das die Größen ausgibt:
find . -type f -printf „%s\n“
Dessen Ausgabe würde ich in ein awk Script umleiten und sowohl die Zeilen, als auch die Summen zählen und den Quotienten ausgeben:

find . -type f -printf „%s\n“ | awk "BEGIN { sum=count=0; } { sum = sum + $0 ; count = count + 1; } END { printf „%d\n“, sum/count;} "

Viele Grüße
Ralf Jonas

Hallo Andy,

zu Deiner Frage:

gibt es unter Linux einen Befehl mit dem man sich die
Durchschnittsgröße aller Dateien die sich in einem speziellen
Ordner befinden, ausgeben kann?

Einen Befehl, der Deinen Wunsch erfüllt, gibt es in dieser direkten Weise nicht. Du kannst Dir aber ein Script zusammenbasteln. Zur Lösung gibt es verschiedene Wege.
Hier nur ein ganz simpler davon:

ls -l *.* | awk ’ BEGIN { sum=0 }
{ sum = sum + $5
anz = NR
END { print sum/anz } ’

Die Wildcards kannst Du mit $1 ersetzen; dann kannst Du die Auswahl der Dateien durch diesen Parameter begrenzen.

Das gleiche läßt sich mit perl, python oder sonst einer Scriptsprache ausführen.

HTH

Nicht direkt, aber die Philosophie von Unix ist ja, durch die Kombination aus einer
Vielzahl kleiner Tools genau solche Aufgaben zu bewältigen.

Ein möglicher Weg geht über die Kombination von „ls“ (Dateien anzeigen) und
„awk“ auf der Kommandozeile. Unter dem folgenden Link findest Du ein kleines
Shell-Skript (average.sh), dass dir genau das für das aktuelle Verzeichnis
berechnet.

http://dl.dropbox.com/u/5634124/WR/average.sh

Zunächst lasse ich mir von ls alle Dateien im aktuellen Verzeichnis auflisten und
schicke die Ausgabe direkt in das awk-Skript, dass mir die Anzahl der Dateien
zählt und deren Größe aufaddiert. Nach der letzten Datei gibt das Skript dann die
Durchschnittsgröße aus.

Es gibt mit Sicherheit noch weitere Wege, dass zu erreichen, das ist nur ein
Beispiel. :smile:

Vorsicht mit:

ls -l \*.\*

Denn ls zeigt bei „*.*“ nur Dateien an, die eine
Dateiendung besitzen. Dateien ohne Dateiendung zählt das Skript nicht mit!

Selbst

 ls -l

oder

 ls -l \*

zeigt der Befehl die „versteckten Dateien“, die mit einem Punkt beginnen nicht an und
berücksichtigt sie somit nicht bei der Berechnung.

Hallo Andy

Versuchs mal mit folgendem Aufruf:
ls -l | gawk ‚{sum += $5; n++;} END {print sum/n;}‘

Gruss,
Simon

Einen echten Befehl weiß ich nicht. Allerdings sollte das mit einer Kombination aus „du -sh“ bzw „ls -l“ und „awk“ nicht schwierig sein.

Falls Du zusätzlich zu diesen beiden Hinweisen eine Anleitung brauchst, melde Dich einfach nochmal. Ich könnte dann in einer freien Minute noch ein Skript hinstricken… :wink: