Mart Frauenlob schrieb: > On 12.05.2010 21:01, Peter Schütt wrote: > > for file in $ROOT/subdir/*.dat; do > > DESTFILE=$ROOT/destdir/`basename $file` > > > > if [ -e $DESTFILE ]; then > > DESTPREFIX=$ROOT/destdir/`basename $DESTFILE .dat` > > N=2 > > DESTFILE=`echo $DESTPREFIX`_$N.dat > > while [ -e $DESTFILE ] > > do > > N=$((N+1)) > > DESTFILE=`echo $DESTPREFIX`_$N.dat > > done > > fi > > mv -v $file $DESTFILE > > done > > > > Zum einen würde ich gerne einmal die Meinung von erfahrenen > > Skriptprogrammierern zu diesem Code-Abschnitt hören, weil ich bei > > Skripten noch ein Neuling bin. Insbesondere interessiert mich, ob man die > > Konstruktion > > DESTFILE=`echo $DESTPREFIX`_$N.dat > > x="foo_$((y++)).bar" > > > besser hinbekommen kann. > > ist vielleicht nicht so von Bedeutung für dich aber da ist eine > race-condition. Aber doch nur, wenn man das Script doppelt auf denselben Endordner laufen lässt, oder täusche ich mich da? Wenn es nur einmal läuft, läuft es sequenziell ab und es wird bei jeder Datei geprüft, ob eine Datei dieses Namens im Endordner schon existiert und hochgezählt. Dann gemoved und weiter geht es mit der nächsten Datei. Ok, wenn das Script nur einmal läuft, man aber noch wild im Endordner rumspielt, während das Script läuft, kann es auch zu Problemen kommen, aber das will man ja eigentlich nicht. Oder hab ich da noch etwas entscheidendes übersehen? -- MfG Jan
Attachment:
signature.asc
Description: This is a digitally signed message part.