Funktioniert relativ einfach. Wechsle ins gewünschte Verzeichnis in dem Rekursiv gesucht werden soll, anschließend:
-
find . -type f -exec sed -ie 's!SUCHSTRING!ERSETZENSTRING!g' {} \;
Punkte sollten dabei escaped werden (. => \.)
Warum ich das ganze gebraucht habe? Vor ein paar Tagen ist ein größeres Java-Projekt, an dem ich beteiligt war, zu Ende gegangen. In diesem Projekt habe ich unter anderem auch ein Trac sowie ein Subversion-Repository gestellt. Da das Projekt nun zu Ende ist und ich gerne potentionelle Sicherheitslücken ausschließe, habe ich mich dazu entschlossen, eine statische Version (da sowieso keine Änderungen mehr vonnöten waren) des Trac's abzulegen. Hierzu habe ich HTTrack Website Copier verwendet um alle Seiten abzugrasen. Anschließend mussten ein paar URLs angepasst werden, die auf externen Bilder zeigten.
Leerzeichen aus Variable $C entfernen:
Vorsicht, hier wird eine Backup-Datei mit dem angehängten Suffix e (z.B. .php -> .phpe) erzeugt. Das dürfte nicht in jedermanns Interesse sein. Daher in solchen Fällen auf jeden fall -ie weglassen.
Wenn das -e als seperater Parameter angegeben wird, werden keine Backup Dateien angelegt.
Das war nicht ganz deutlich: natürlich trotzdem noch -i drinlassen.
Und das -e steht für:
So kann man mehrere “-e” hintereinander schalten um mehrere Ersetzungen mit einem Script zu machen
Der Aufruf oben klappt mit GNU sed bestens