Mittwoch, 20. Dezember 2006, 13:10 Uhr

Shell: Text in Dateien suchen und ersetzen

Folgendes Shell-Script hat mir bereits zwei Mal nützliche Dienste erwiesen:

#! /bin/sh
STRSEARCH="search" # Properly escape both strings; e.g. / becomes \/ etc.
STRREPLACE="replace"

find "~/." -type f -name '*.html' -print | while read i
do
        cp "$i" "$i.tmp"
        
        if [ -f "$i.tmp" ]
        then
                #echo "s/$STRSEARCH/$STRREPLACE/g"
                sed "s/$STRSEARCH/$STRREPLACE/g" "$i" > "$i.new"
                if [ -f "$i.new" ]
                then
                        mv "$i.new" "$i"
                else
                        echo "$i.new doesn't exist"
                fi
        else
                echo "$i.tmp wasn't created"
        fi
done

Download (639 Bytes)

Die Anwendung des Scripts sollte relativ sicher sein – von jeder zu ändernden Datei wird zuerst eine Kopie (.tmp) erstellt. Ist dies nicht möglich, wird die Ausführung abgebrochen.

Tags:
Labels: Uncategorized

Ein Kommentar Kommentare

OAK sagt:

Hallo, super vielen Dank für das Script. Ich möchte zusätzlich noch eine Bedingungen integrieren: Die Ersetzung sollte nur stattfinden, wenn wenn das Erstellungsdatum der Datei älter als 2011 ist. Wärst du in der Lage mir das zu erweitern? Vielen Dank. Gruß, Olaf

Kommentar erfassen