Finden und Ersetzen

Manchmal kopiert man ein bestehendes System um ein Testsystem aufzubauen oder passt ein bestehendes an. Dann muss man häufig in einem kompletten Verzeichnis mit Unterordner in bestehende Dateien schauen und Konfigurationen anpassen. Zum Beispiel wenn sich die URL von einem System geändert hat und man rekursiv in allen Dateien diese neue URL eintragen muss. Das kann mühsam und zeitraubend sein, aber nicht wenn man die Bash benutzt. Hier ein Beispiel in dem alle Vorkommen von www.example.de in www.new-example.de geändert werden.

grep -rl 'www.example.de' . | xargs sed -i 's/www.example.de/www.new-example.de/g'

grep sucht dabei mit -r im aktuellen Verzeichnis rekursiv abwärts welches durch . angegeben wird und listet die Dateinamen mit l auf in denen es den Suchbegriff ‘www.example.de’ gefunden hat. Diese werden dann mittels Pipe | an das xargs Programm übergeben. Dieses wiederum führt für jede Datei sofort (inplace) -i eine Substitution (deutsch: Ersetzung) von www.example.de zu www.new-example.de durch und das für jedes Vorkommen g und nicht nur den ersten Treffer innerhalb einer Datei.