Ich schrieb ein Bash-Script, mit dem Sie rekursiv Textzeilen in Dateien eines spezifischen Ordners und dessen Unterordner suchen und ersetzen können. Die Schlüssel-Funktionen:
- rekursive Operationen mit sofort sichtbaren Ergebnissen im Simulationsmodus (keine Wartezeit)
- Perl/POSIX konforme Regex für den zu suchenden Text
- Keine Veränderungen der Benutzerrechte von ersetzten Dateien
- Cross-Platform-Kompatibel (BSD/Mac/POSIX Linux kompatibel)
- Leichter Vergleich, ANSI-colorierte Ausgaben (umschaltbar)
- Sichern: Erzeugen und Entfernen temporärer Dateien im System-Temp-Verzeichnis
- Simulationsmodus
- Freeware

Einer der Hauptgründe dieses Script zu schreiben und nicht eine der existierenden Alternativen zu benutzen, ist die Implementation eines Simulationsmodus, kombiniert mit der Präsentation klarer Ergebnisse, durch klare Hervorhebung von gesuchten und ersetzten Texten.
Im Simulationsmodus (Schalter -s) werden keine Veränderungen vorgenommen, aber Sie können die anstehenden Ersetzungen durch farbliche Hervorhebungen, sofern Ihr Terminal Farben unterstützt, erkennen. Durch die Anwendung einer 'while read file'-Schleife ist es möglich, die Ergebnisse mit einem mal zu sehen, ohne Verzögerung, solange Treffer erzielt werden -- das macht besonders in langen Verzeichnisbäumen und Unterverzeichnissen Sinn -- kein Wartezeit, bis das Script beendet ist.
[
crarko: Der Autor hat mir eine aktualisierte Version des Scripts geschickt, dass Sie mit der weiter unten stehenden Verknüpfung herunterladen können.]
Einige Anwendungsbeispiele:
Ersetze 'blau' mit 'grün' in allen Dateien des aktuellen Verzeichnisbaum. Durch den Schalter -s wird nicht wirklich eine Veränderung vorgenommen (Simulationsmodus).
srpl -s . 'blau' 'grün'
Lösche vorangestellte Leerzeichen (Leerzeichentaste und Tabs) vor jeder Zeile -- Richte alle Textzeilen links aus.
srpl 's/^[ \t]*//'
Getestet unter Mac OS X 10.6.3, Linux Slackware 8.1, 10.1 und Gentoo 2.0.1.
[
crarko: Ich habe dies nicht getestet. Die Quelldatei des Scripts kann
hier heruntergeladen werden. Inkl. des anderen Scripts des Autors.]