PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ersetzten



Frank#
11-10-2002, 21:19
Hallo

ich würde gerne in einer current working Directory alle gefunden Dateien mit einem String, ersetzen, inclusive subdirectories.

Ansatz ist:

find . -type f| xargs grep = '/../../test/';

also = '/../../test/'; steht exact so drin in einigen php Dateien und wuerde es gerne nach = '/var/www/html/test/'; ersetzten

würde mich wirklich über Unterstützung sehr freuen

Grüße
Frank

anda_skoa
11-10-2002, 21:54
ich benutze dafür dieses Script



#!/bin/bash
# replace.sh file XXX YYY
# replaces all XXX with YYY in file file
cat $1 | sed s/$2/$3/g > $1.bak && mv $1.bak $1


in dieser Art und Weise (ich habs mit m3u gemcaht, mp3 playlists, als sich mein mountpoitn geändert hat)

#> find . -name "*.php" -exec replace.sh {} "/../../test/" "/var/www/html/test/" \;

Ich würde es sicherheitshalber aber vorher in einem Verzeichnis mit ein paar Kopien der echten Datein versuchen :)

Ciao,
_

Frank#
12-10-2002, 13:15
super das klappt hervorragend ... mit normalen Ausdruecken. Denn fuer mein spezielles Vorhaben muss ich './' und '../../' also auch mit den Hochkommas ersetzten, und da verweigert das Script seinen Dienst. Ich hab schon schon verschiedene Varianten mit zusaetzlichen Hochkommas und/oder Anfuehrungszeichen probiert, aber es hilft leider nicht. Haettest du da nen Tipp ?

Grüß
Frank

anda_skoa
12-10-2002, 13:42
Probier im script statt
sed s/$2/$3/g
das hier
sed s#$2#$3#g

Ciao,
_

Frank#
12-10-2002, 13:50
ja danke super klappt wunderbar :cool:

Grüße
Frank