Dateiänderungsdatum per Skript ändern (mit touch)

A

alexfista

Grünschnabel
Hallo auch,
bin neu hier!
Ich habe folgendes Problem: Ich will bei einer ganzen Menge Dateien - nach Datensicherungswiederherstellung, bei der leider alle Dateiinformationen verloren gegangen sind - das ursprüngliche Änderungsdatum mit touch wiederherstellen.
Habe dafür auch schon ein Mini-Skript:

cat datei | while read FELD1,Feld2,...;
do
touch -m -t FELD7FELD8FELD9 ~/Ordner/$FELD11
done

Das tuts FAST...leider ist in der Datei, die ich auslese (Textdatei, in der alle Datumsinfos von vor der Wiederherstellung drinstehen) das Monatsformat im Stil Jan, Feb, Mar, etc..
Wie kann ich das ändern, also:Jan=01, Feb=02, etc.?

Danke, Grüße Alex:think:
 
Hallo

Sehe ich das richtig dass in deiner Datei ein Dateiname gefolgt von Monatsname gefolgt von ???? steht?

Gib am besten mal ein paar Zeilen an, und was du als Ausgabe erwartest.
Eventeull ist es ja der Beste Weg die Datei mit sed oder perl zu ändern.

Gruß Wolfgang
 
Hallo Wolfgang,
hier ein paar Zeilen aus der Datei:

115294212 732 -rwxrwx--- 1 DOM+pfister DOM+cosec 740940 Sep 26 10:37 groups/cosec/INSTALL/VNC\ TightVNC/tightvnc-server-1.2.9-1.i386.rpm
108888361 8 drwsrws--- 2 DOM+pfister DOM+cosec 4096 Apr 25 2006 groups/cosec/INSTALL/Netstumbler\ 0.40
112821089 1304 -rwxrwx--- 1 DOM+pfister DOM+cosec 1324940 Sep 13 2005 groups/cosec/INSTALL/Netstumbler\ 0.40/netstumblerinstaller_0_4_0.exe
108888363 8 drwsrws--- 2 DOM+pfister DOM+cosec 4096 Apr 25 2006 groups/cosec/INSTALL/WinSCP\ 3.76
112823769 1160 -rwxrwx--- 1 DOM+pfister DOM+cosec 1176064 Oct 10 2005 groups/cosec/INSTALL/WinSCP\ 3.76/winscp376.exe

...und ich brauche nur den Dateinamen (-pfad) und Tag und Monat. Damit kann ich ja dann mit touch problemlos das Datum ändern. Muss natürlich das Jahr vorsetzen, also z.B. touch -m -t 2006$FELD8$FELD9 ~/Ordner/$FELD11 .
Nur das Feld8 halt in Buchstaben in meiner Datei steht und touch eine Zahl zwischen 01 und 12 braucht. Das ist mein Problem!

Gruß Alex
 
Hallo

Dann schick diese Datei durch sed und ersetze die Monatslürzel durch die Nummer.
Das sind exat 12 Ersetzungen.

Mit GNU sed kannst du das insert ->Option -i verwenden.
Sonst mit temporären Dateien arbeiten.
Du kannst natürlich auch sed in die Pipe hängen.
Wobei du das aber vorher testen sollest, ob das ergebnis auch stimmt.

Code:
sed -e 's/Jan/01/g;s/Feb/02/g;s/Mar/03/g;....' datei|while read
...
done

Gruß Wolfgang
 
Funktioniert!! (mit sed anstelle von cat)

Vielen Dank auch und Grüße Alex
 

Ähnliche Themen

Skript bei Lubuntu nach jedem Start ausführen

HD Parameter setzen Suse 10.3, lahmer gehts kaum!

Zurück
Oben