Dateiinhalt suchen und ersetzen Linux Shell

Folgendes Problem:
Ich muss über 7000 Dateien durchsuchen nach bestimmtem Inhalt (Text1), wobei die Dateinamen variieren. Bei allen gefundenen Dateien, welche Übereinstimmung aufweisen soll automatisch der gefundene Dateiinhalt (Text1) gegen den neuen Inhalt (Text2) ausgetauscht werden, wobei Speicherort und Name der Datei nicht verändert werden dürfen.
Das ganze sollte in der Linux Shell funktionieren.

Fallbeispiel:
Gesucht wird „bisher der alte“ in Inhalt „der Suchtext ist bisher der alte!“
Ersetzt werden soll „bisher der alte“ gegen „jetzt der neue“ wobei das Ergebnis dann „der suchtext ist jetzt der neue!“ lauten soll.

Für Ideen bin ich offen.

Ich gebe zu bedenken das dies mein erster versuch unter Linux ist.

Hallo erstmal

Dazu könnte man ‚sed‘ (i.V. mit ‚perl‘) verwenden: http://stackoverflow.com/questions/471183/linux-comm…

mfg M.L.

Hi M0J01812,

wenn in einem Directory keine Unterverzeichnisse sind kannst du das nehmen:

for i in \*; do cp $i $i.bak; sed 's/'ein' /'x' /g' $i.bak \> $i; rm $i.bak; done 

Sind jedoch Unterverzeichnisse vorhanden, dann funktioniert das logischerweise nicht…dann müsstest du das probieren:

for i in $(find /home/xxx/Dokumente/ -type f); do cp $i $i.bak; sed 's/'ein' /'x' /g' $i.bak \> $i; rm $i.bak; done

Jedoch sei bei den letzten Befehl gewarnt bei zu vielen Dateien und Pfaden, folgt ein Kernel Buffer Overflow (3.5.7)…

Noch zur kurzen Erklärung das ‚ein‘ in dem sed-Befehl ist das Suchwort und das ‚x‘ das zu Ersetzende. Müsstest das gegebenenfalls auf deine Bedürfnisse noch ein wenig anpassen.

Gruß XXD