# Bash: Strings in Dateien mit Regex umschreiben



## Radhad (24. Juni 2008)

Ich suche eine Möglichkeit, wie ich in mehreren Dateien in mehreren Unterverzeichnissen mittels RegEx Pattern bei Treffern die Stellen umschreibe.

Ich suche also z.B. $this->my->VARS; und will es umschreiben auf $this->_('VARS');

Ich hab so ca. 2000 bis 2200 Treffer und habe wenig Lust, alles händisch zu ändern. Kann mir da jemand einen Tipp geben, wie man das vernünftig als "Suchen unn Ersetzen" Script ausführen kann?

Finden tue ich alle mit folgendem Schnipsel:

```
find -type f | xargs grep "$this\->my->"
```
Ich habe nicht viel Ahnung von Bash bzw. xterm (denke mal, das macht keinen Unterschied) und weiß auch nicht, wie ich das jetzt weiter vorran bringen kann.


----------



## deepthroat (24. Juni 2008)

Radhad hat gesagt.:


> Finden tue ich alle mit folgendem Schnipsel:
> 
> ```
> find -type f | xargs grep "$this\->my->"
> ...


Dazu brauchst du weder Bash noch xterm Kenntnisse. Dafür wäre sed das geeignete Werkzeug.

```
find -type f -print0 | xargs -0rn 1 sed -ie 's/\$this->my->/$this->/g'
```

Du solltest aber auf jeden Fall vorher testen, ob es auch funktioniert bevor du das über alle Dateien laufen läßt!

Oder du verwendest etwas grafisches: http://sandr.sourceforge.net/ (benötigt Java)

oder http://regexxer.sourceforge.net/ (ist bei Debian / Ubuntu im Repository)

Gruß


----------

