Hallo, On Fre, 09 Feb 2001, Jan Trippler wrote:
On Don, Feb 08, 2001 at 07:55:06 +0100, David Haller wrote:
On Mit, 07 Feb 2001, Jan Trippler wrote:
On Mit, Feb 07, 2001 at 05:36:41 +0100, David Haller wrote: [...]
echo -n `ls -l -d -G "$1" | awk '{print $4}'`
Oder (wie Bernd schon nannte): wc -c "$1" | sed "s/^ *//" | cut -f1 -d" "
Oder: wc -c "$1" | sed 's/^ *\([0-9]*\).*/\1/' *g*
Oder: wc -c "$1" | sed 's/^ *//;s/ .*$//' Dann sind wir wieder kompatibel ;-)
David: Rundenzeiten? :-)
*immerich* *bg* Aber mir macht das ja auch Spass und dieses Mal lag ich mit meinen Prognosen sogar richtig ;) Die "wcbash" Variante ist mir (komischerweise) erst jetzt eingefallen... /usr/local/bin/filesize ist dabei die 2te Version (von heute) des wrappers um lstat. /usr/bin/filesize das script von suse ('ls ... | cut -b..'). Das "Testfile" in $1 war ca. 100MB gross. Korrekte Ergebnisse liefern alle Varianten, 'wcbash' habe ich aber nicht weiter ausgetestet, entspricht aber einem 'cut -d" " -f1'. Das Ganze "wie immer" nur als Anregung fuer eigene Test. ;) Plattform: AMD K7/500, 196 MB RAM, ~80 MB "cached". Im unten gemessenen Durchgang fand nicht ein HD-Zugriff statt. ==== test-filesizes.sh ==== #!/bin/bash its=`seq 99` lsawk() { for i in $its; do; echo `ls -l -d -G "$1" | awk '{print $4}'` >/dev/null done } wcsedcut() { for i in $its; do wc -c "$1" | sed "s/^ *//" | cut -f1 -d" " >/dev/null done } wcsed() { for i in $its; do wc -c "$1" | sed 's/^ *\([0-9]*\).*/\1/' >/dev/null done } wcbash() { for i in $its; do s=`wc -c "$1"`; echo ${s% *} >/dev/null done } filsize() { for i in $its; do /usr/bin/filesize "$1" >/dev/null done } fsize() { for i in $its; do /usr/local/bin/filesize "$1" >/dev/null done } init() { for i in $its; do ls "$1" >/dev/null done } for m in init filsize wcsedcut lsawk wcsed wcbash fsize; do echo -n "$m:" time $m $1 done ======== real user sys init: 0m0.580s 0m0.280s 0m0.300s filsize: 0m2.713s 0m1.480s 0m1.220s wcsedcut: 0m1.556s 0m0.770s 0m0.790s lsawk: 0m1.387s 0m0.620s 0m0.720s wcsed: 0m0.974s 0m0.500s 0m0.480s wcbash: 0m0.613s 0m0.320s 0m0.290s fsize: 0m0.341s 0m0.150s 0m0.190s CU David, moege jeder sein Schluesse ziehen :) P.S: ich hoffe das C-Proggie (das hier in fsize aufgerufen wird) von heute funzt sicher... :) Empfehlen wuerde ich aber, wenn man nicht selbst das Proggie verifizieren kann, die wcbash Variante. Hm. Dabei faellt mir auf, eine lsbash Variante fehlt! Ah, z.B: lsbash() { for i in $its; do s=`ls -s --block-size=1 "$1"`; echo ${s% *} >/dev/null done } lsbash: 0m0.610s 0m0.270s 0m0.340s Die Zahlen der anderen Varianten waren dabei aehnlich wie oben, bes. fsize: 0m0.340s, wcbash 0m0.612s, wcsed 0m0.971s Also durchaus vergleichbar. Mich duenkt, als wuerde wc -c schlicht und einfach ebenfalls (wie ls und mein fsize/filesize) auf stat() zurueckgreifen. -- 5: Breitbandkommunikation Porno MPEGs mit Ton (Kristian Köhntopp)