Text Search&Replace Files/Subdirectories

F

franklin007

Grünschnabel
Hallo zusammen,

Ich möchte einen simplen Search&Replace über knapp 50.000 .html Dateien in verschiedenen Unterverzeichnissen ausführen, dabei möchte ich alle enthaltenen Textstellen ".ico" in ".gif" ändern, also eine ganz einfache Geschichte... (dachte ich)

Klappt aber nicht, jedenfalls nicht so einfach, wie ich mir das vorgestellt hatte. :think: Hat jemand einen Hint?

Meine Alternative stinkt gewaltig, da müsste ich den Search&Replace lokal unter windoof mit meinem geliebten Ultraedit ausführen und anschliessend alles in Netz schieben, nicht gerade die Toplösung. Ich suche die elegante Linux-Lösung... :)
 
Code:
find . -iname "*.html" -print0 | xargs -0 -n1 sed -e 's/\.ico/.gif/g' -i ''

Gruss, Xanti

edit: Und wenn Dein sed den -i -Schalter nicht kennt, geht auch

Code:
find . -iname "*.html" -print0 | xargs -0 -n1 perl -pi -e 's/\.ico/.gif/g'
 
Zuletzt bearbeitet:
Mein Fehler, hatte mich nicht klar genug ausgedrückt...

Das Search&Replace sollte sich nicht auf den Filenamen beziehen, sondern auf den Content der Files... :hilfe2:

Ich möchte also in knapp 50.000 HTML-Dateien jede vorkommende Textstelle ".ico" in ".gif" ändern.

(Hintergrund: Der IE hat massive Probleme mit .ico Dateien, deshalb wandel ich jetzt alle Icons mit IM in kleine Gifs und schon klappts auch mit dem IE) :think:
 
franklin007 schrieb:
Mein Fehler, hatte mich nicht klar genug ausgedrückt...

Das Search&Replace sollte sich nicht auf den Filenamen beziehen, sondern auf den Content der Files... :hilfe2:
...

Genau das macht mein Vorschlag.

Gruss, Xanti
 
ok, das klappt wunderbar, danke schön. :)

Interessant wäre noch ein Schalter, um das Update der Modify Time der geänderten Dateien zu verhindern. Du weisst nicht zufällig, ob das zu bewerkstelligen ist? :)
 
Nicht, dass ich wüsste. Mit touch -t kann man explizit die mod-Time setzen.

Gruss, Xanti
 
Zurück
Oben