PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shellscript -> Dateinamen



havingfun
27.06.2004, 19:55
Hallo

ich bin gerade dabei mich in die Shellprogrammierung einzuarbeiten und es klappt auch so halbwegs.
Nur stehe ich jetzt vor einem Problem (von bestimmt noch vielen ;) ).
Ich habe mittels rar mehrere Volumes erstellt von einem Plattenbackup. Diese ganzen einzelnen Dateien sollen nochmal einzeln gezipped/tared werden mit aktuellem Datum der als prefix übergeben werden soll.
Also aus der Datei backup_hde2.part1.rar soll be22706a.zip, aus backup_hde2.part2.rar soll be22706a.zip werden und so weiter.

Was ich halt wissen möchte, wie ich die zipfiles in diesem format erstellen lassen kann wobei be(fest)[prefix][a-z].zip sein muss.

qmasterrr
27.06.2004, 20:19
welche shell benutzt du denn?

havingfun
27.06.2004, 20:28
Doch glatt vergessen: bash

qmasterrr
27.06.2004, 20:30
dann weiß ich es net

rup
28.06.2004, 19:20
Das Datum bekommst du z.B. mit:
date +%d%m
Beim Rest wird dir eventuell sed oder awk helfen.
Ich wuerde das ganze allerdings mit Perl machen, da ist es sicher viel einfacher.

havingfun
16.07.2004, 06:29
Danke erstmal für die Antwort, hat geklappt.
Nun habe ich folgendes Problem:
Ich speichere die Datumsvariable in meinem Bashscript und will nun zusätzliche Dateien mit dem aktuellem Datum erstellen wofür ich sed benutze.
Dabei ist mir aufgefallen das ich kein / (slash) benutzen kann wenn ich die Variable an sed übergebe (mit anderen zeichen wie - funktioniert es). Woran liegt das?
Habe dazu eigentlich keine relevanten informationen gefunden ...

bluelupo
16.07.2004, 09:30
Zeig mal die entsprechende Stelle im Script.

havingfun
16.07.2004, 13:55
datum=`date +%m-%d-%Y`


sed "s/#total/$total/g;s/#archivgroesse/$archg/g;s/#datum/$datum/g" $cont > $backupdir/$cont

Wobei alles funktioniert, nur wenn die - in datum durch / ersetze funktioniert es nicht mehr.

meez
16.07.2004, 15:31
Du must / maskieren...\/, weil sed / als Tokenizer verwendet...

havingfun
16.07.2004, 15:41
Das mit dem maskieren hab ich schon gelesen, und soweit ich es verstehe, auch probiert.
Nur funktioniert es nicht. Denke ich mache irgendwas falsch?

bluelupo
16.07.2004, 16:07
Probiers das mit dem Datum mal isoliert:
sed 's/#datum/\/$datum/g' $cont > $backupdir/$cont

...bei funktioniert das.

havingfun
16.07.2004, 16:22
Das gleiche. sed beschwert sich immer über eine ungültige Option.
Hab das Problem anders gelöst da es nicht all zu wichtig war:

Habe die Variable Datum einfach aufgeteilt und in der zu schreibenden Textdatei: #datumt/#datumm/#datumj benutzt.