Suchen und ersetzen!

Post Reply
Message
Author
Bob+Gomorrha

Suchen und ersetzen!

#1 Post by Bob+Gomorrha »

Ich habe in einem Verzeichnis 32 Dateien *.html.

In all diesen Dateien möchte ich den Text index.html durch index.php ersetzen.

Dank im Voraus

bg

tj

Re: Suchen und ersetzen!

#2 Post by tj »

Hi Bob,

hab leider gerade keine html Dateien zum ausprobieren, aber

for file in *.html; do mv $file `basename $file .html`.php; done

oder so aehnlich muesste den Job machen.

tj

tuxic trace

Re: Suchen und ersetzen!

#3 Post by tuxic trace »

find . -name "*.html" -exec perl s/index.html/index.php/g {} ;<!--no-->

Das Problem ist, das perl Kommando stimmt so nicht ganz, ist erstmal nur die Idee dahinter. Ich hab die korrekte Syntax leider nicht im Kopf. Da fehlt auf jeden Fall noch ein switch. Vermutlich mußt Du auch die "/" noch maskieren:

find . -name "*.html" -exec perl s\/index.html\/index.php\/g {} ;<!--no-->

Weiß ich nicht und werde ich vermutlich nie lernen. Ist nur ne Idee, bis jemand hier mit einer brauchbaren Lösung ankommt.
Alternativ gibt es ein Programm namens "sed_inline". Wie der Name nahelegt, eine sed Version, die "inline replacements" machen kann.
Solltest Du also fit auf sed sein, evtl. eine günstigere Möglichkeit als perl.

vi kann das auch, aber ich weiß leider nicht, wie :(

Ok, wirklich hilfreich ....

Bob Gomorrha

Re: Suchen und ersetzen!

#4 Post by Bob Gomorrha »

Danke vorerst mal für die Antworten - werd´s heute abend auf einer Kopie testen. Sag euch dann Bescheid.

Bob Gomorrha

Re: Suchen und ersetzen!

#5 Post by Bob Gomorrha »

Leider Fehlanzeige!

Hab mich aber vielleicht auch falsch ausgedrückt.

32 Dateien, die alle auf *.html enden.

IN diesen Dateien (im HTML-Code) gibt es Verweise auf die index.html. Jetzt soll IN diesen Dateien der Verweis aber nicht mehr auf
index.html sondern auf index.php lauten. Also im Prinzip: suche index.html und ersetze durch index.php.

Dank schon mal

bg

Descartes

Re: Suchen und ersetzen!

#6 Post by Descartes »

perl -np -i.bak -e 's/index.html/index.php/g' *.html
Eventuell muss man im s/// Aufruf noch den Punkt noch maskieren -- grad nicht getestet

Mit dem Parameter "-i.bak" wird von jeder veränderten Datei eine Sicherungskopie mit Dateiendung *.bak angelegt. Wenn du keine Sicherungsdateien benötigst, dann lass einfach den Parameter -i.bak komplett weg.


mit Hilfe von find lassen sich dann auch gleich Unterverzeichnisse durchsuchen

find . -type f -name "*.html" -exec perl -np -i.bak -e 's/index.html/index.php/g' {} ;<!--no-->

wobei -exec jeweils einen neuen Prozess forkt und ab einer gewissen Trefferanzahl der find Aufruf mit xargs performanter ist

find . -type f -name "*.html" | xargs perl -np -i.bak -e 's/index.html/index.php/g'

Bob Gomorrha

Re: Suchen und ersetzen!

#7 Post by Bob Gomorrha »

Guru, Guru!!!

Mächtig Skriptgut, Descartes!

Die erste Zeile hat auf Anhieb funktioniert.

Dank Dir nochmal.

bg

Post Reply