PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateigrößen von mit find gefundenen Daten zusammenrechnen



thovan
26-10-2010, 11:37
Hallo,

ich suche gerade nach einem simplen Weg die Größen aller von find gefundenen Dateien zusammenzurechnen.
Ehe ich mit einem perl-Script arbeite dachte ich das geht doch sicher auch ganz simpel mit Shell-Kommandos.

Macht es Sinn find über xargs mit wc dafür zu verknüpfen oder gibt es eine effektivere Methode?

John W
26-10-2010, 15:57
Flotter Einzeiler:


find -type f -exec du -s {} \+ | awk 'BEGIN {sum=0} { sum += $1 } END {print sum}'

msi
26-10-2010, 16:17
mit perl geht das aber genauso gut:



find -type f -exec du -s {} \+ | perl -lane '$l+=$F[0]}{print $l'

John W
26-10-2010, 16:19
Aber lesen kann das keiner, der sich nicht mit Perl auskennt - ich hätte keine Ahnung, was das tut.
Den Ansatz mit awk versteht man aber schon, wenn man etwas Englisch kann.

msi
26-10-2010, 16:42
Aber lesen kann das keiner, der sich nicht mit Perl auskennt - ich hätte keine Ahnung, was das tut.
Den Ansatz mit awk versteht man aber schon, wenn man etwas Englisch kann.

deswegen sollte man auch kommentare in seinem programm schreiben.
auch vor den awk befehl sollte ein kleiner kommentar gesetzt werden.

thovan
27-10-2010, 09:56
Und Lösung Nummer 3 - die mir gestern noch spontan selbst einfiel:


find $1 -mtime $2 -ls | awk '{ total = total + $7 } END { printf "%s (%skiB, %sMiB, %sGiB)\n", total, total/1024, total/(1024*1024), total/(1024*1024*1024)}'

(Aus meiner Sicht auch leicht verständlich.)

$1 gibt den Suchpfad an, $2 den Zeitraum für die Suche.

Ich danke euch aber für eure Hinweise.