Re: viele dateien auf einmal modifizieren
Hans Gerber schrieb:
> Verstehe ich richtig, dass bei 'sed' immer ganze Zeilen ersetzt
> werden nicht einzelne strings ?
Nein, sed arbeitet zeilenweise. Innerhalb der Zeile ist Beliebiges
möglich.
> wie kriege ich denn jetzt ..."first"... in ..."last"... ?
Mit Klammerungen. Ein praktisches Beispiel:
Dateien des Musters datei-AB01.htm sollen nach liste-01-AB.html
umbenannt werden.
ls -d *.htm | \
sed 's/datei-\(..\)\([0-9]*\)\.htm/mv & liste-\2-\1.html/' | sh
Vereinfacht (ohne die lästigen Escapes) passiert folgendes:
Suche: datei-(..)([0-9]*).htm und ersetze durch: mv & liste-\2-\1.html
In einem Suchmuster können bei sed Teile eingeklammert und im Ersetzen
Teil mit der \Nummer_des_Auftretens referenziert werden. Das & steht
für den gesamten Suchmustertreffer.
In obigem Beispiel wird also aus einer Liste mit den ursprünglichen
Dateinamen eine Liste mit passenden "mv" Kommandos und neuen
Dateinamnen gebastelt. Diese schaut man sich zuerst (ohne das | sh am
Ende) an und prüft auf Sinn. Ist alles ok, an die Shell verfüttern.
--
rainer@ellinger.de
Reply to: