On Wed, 12 Feb 2003 13:48:34 +0100 Hans Gerber <[EMAIL PROTECTED]> wrote:
> Hallo, > > in einem shellskript möchte ich gerne x Kopien einer Datei anlegen. > > dabei sollen die Dateinamen der neu erzeugten Dateien wie folgt > aufgebaut sein: > > Dateiname + laufendeNummer + suffix > > Das kann doch eigentlich nicht so schwer sein, aber ich kriege es > trotz langer Suche nicht hin. Vielleicht habt Ihr ja noch einen Tip, > bevorzugt ohne komplexe sed Konstrukte ;) Mit ${fname%.*} kann ich > jetzt zwar das suffix rausschmeissen, aber wie kriege ich hinterher > wieder ds richtige suffix dran? > danke, > Hans > > ++snipp+++ > > #! /bin/bash > # > # Very simpleminded "multiplecopy" utility (based on "???"). > # > # The "ren" utility, by Vladimir Lanin ([EMAIL PROTECTED]), > #+ does a much better job of this. > > > ARGS=2 > E_BADARGS=65 > # check for syntax of calling commando > if [ $# -ne "$ARGS" ] > then > echo "Benutzung: `basename $0` Anzahl Datei" > # As in "rn gif jpg", which renames all gif files in working > directory to jpg. > exit $E_BADARGS > fi > > #check if file exists > if [ -f "$2" ] > then > for ((a=1;a<=$1;a++)) #loop for 'a' times > do > fname=`basename $2` # Strip off path. > n=`echo $fname | sed -e "s/$1/$2/"` # Substitute new for > old in filename. > fnamebase=${fname%.*} > fnamenew=$fnamebase+$a > # cp $fname $fname.$a # copy file > echo "N: $n fname: $fname a: $a pn: $pn" > done > fi > echo "$a Dateien kopiert." > exit 0 Hi Hans, Beispiel dat=/home/ich/datei.tar.gz echo ${dat##*/} datei.tar.gz echo ${dat#*.} tar.gz echo ${dat##*.} gz echo ${dat%/*} /home/ich/datei echo ${dat%.*} /home/ich/datei.tar Die jeweilige Ausgabe in eine Variable geschrieben und anschließend nach Deinen Erfordernissen erneut zusammenbauen. Gruß CHristian -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)