PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Filegrösse in Variabel einlesen



peacefully
30-05-2005, 12:47
Grundsätzlich möchte ich die Grösse einer Datei in eine Variabel einlesen. Bis jetzt habe ich zwei Lösungen gefunden, aber beide arbeiten nicht so wie ich es mir wünsche.

1. VAR=$(sum $file | cut -f1 -d" ") --> ist bei grossen Files zeitaufwändig
2. VAR=(ls -l $file | cut -c34-41) --> arbeitet ungenau

Kennt ihr noch weitere Möglichkeiten?

Vielen Dank und en Gruess

klewan
30-05-2005, 14:05
a=`stat -t FILE|awk '{print $2}'`

Hans-Georg Normann
30-05-2005, 19:42
Hier noch ne awk-Version in Verbindung mit stat

#! /usr/bin/awk
#scriptname: print_file.awk

// { print_file() }

function print_file() {
split($0, aString, "::")
printf "%-30s%15d\n", aString[1], aString[2]
}
Aufruf
[hans@rosi ~]$ stat --format="%n::%s" *|awk -f print_file.awk
OpenOffice.org1.1.0 4096
Pentax 4096
Projects 4096
ed2k 4096
evolution 4096Das ganze als Kurzversion sollte dann so aussehen:
stat --format="%n::%s" *|awk {split($0, aString, "::"); printf "%-30s%15d\n", aString[1], aString[2]}

Man kann natürlich awk auch komplett eliminieren und dieses in deinen Code einbauen:
VAR=$(stat --format="%s" $file)
Jetzt liegt's an dir, welche Version du nimmst. Wenn du wichtig erscheinen willst, solltest du externe awk Scripte einbinden, das ezeugt ziemlich viel Sourcecode und verstehen tut es eh kaum einer. Wenn du nur schnell ein Ergebnis haben willst, sollte die letzte Version reichen. ;)

Hans

peacefully
06-06-2005, 08:24
Vielen Dank für eure Ideen.

Hier noch eine weitere Möglichkeit:

VAR=`ls -l FILE | awk '{print $5}'`