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)

Antwort per Email an