Einfache Frage: search and replace
Hallo, ich muss in manchen Dateien "web1" zu "chaos" machen. Es handelt sich um shtml, html, cgi und pl Dateien. Es gibt bestimmt einen Unix/Linux-Befehl der das kann - aber da ich Anfänger bin weiss ich nicht welcher. Kann mir da mal einer von den Profis einen schnellen Tipp geben? Danke. Igor
Am Mittwoch, 12. Mai 2004 23:32 schrieb Igor Warneck:
ich muss in manchen Dateien "web1" zu "chaos" machen. Es handelt sich um shtml, html, cgi und pl Dateien.
Es gibt bestimmt einen Unix/Linux-Befehl der das kann - aber da ich Anfänger bin weiss ich nicht welcher. Kann mir da mal einer von den Profis einen schnellen Tipp geben?
Der Befehl heisst sed, abhängig davon, wie Du die Dateien ermittelst kannst Du ihn so einsetzen: for f in datei1.html datei2.html datei3.cgi; do sed 's/web1/chaos/g' "$f" >"${f}.tmp" && mv "${f}.tmp" "$f" done Wenn es alle Dateien in einem Verzeichniszweig treffen soll: for suffix in .shtml .html .cgi .pl; do find /verzeichnis -name "*$suffix" -print | while read f; do sed 's/web1/chaos/g' "$f" >"${f}.tmp" && mv "${f}.tmp" "$f" done done Nur Beispiele, es kommen sicher noch ein paar andere Ideen ;) Jan
JT> Wenn es alle Dateien in einem Verzeichniszweig treffen soll: JT> for suffix in .shtml .html .cgi .pl; do JT> find /verzeichnis -name "*$suffix" -print | while read f; do JT> sed 's/web1/chaos/g' "$f" >"${f}.tmp" && mv "${f}.tmp" "$f" JT> done JT> done for suffix in .shtml .html .cgi .pl; do find -name "*$suffix" -print | while read f; do sed 's/web1/chaos/g' "$f" >"${f}.tmp" && mv "${f}.tmp" "$f" done done Du bist ein Schatz. Ich könnte Dich knutschen! :-) Ich musste das Script nur ein bisschen ändern. Dann gings. Igor im Glück
Am Donnerstag, 13. Mai 2004 00:50 schrieb Igor Warneck: [...]
for suffix in .shtml .html .cgi .pl; do find -name "*$suffix" -print | while read f; do sed 's/web1/chaos/g' "$f" >"${f}.tmp" && mv "${f}.tmp" "$f" done done
Du bist ein Schatz. Ich könnte Dich knutschen! :-)
Ein Bier wäre mir lieber ;-)
Ich musste das Script nur ein bisschen ändern. Dann gings.
Eine kleine Anmerkung: Dein find geht gut, weil der GNU-find nicht so zickig ist wie andere. Die korrekte Syntax für find lautet: find <Basisverzeichnis> [<Optionen>] <Aktion> Ich hatte "/verzeichnis" als Beispiel für das Basisverzeichnis genommen. Wenn Du also im Verzeichnis drin stehst, ab dem Du suchen willst, dann nutze den find so: find . -name "*$suffix" -print Das ist sauberer. Nähere Infos liefert Dir wie immer: man find Jan
Hättest Du gesagt das Du ein Bier brauchst, ich hätte es Dir sofort gegeben. Hätte ich auch nicht knutschen müssen - iss ja bei den Stoppeln nicht so angenehm :-) Ich nähere mich zwar der Linuxwelt und finde sie geil, aber es gibt manchmal Hürden die sind einfach unbegreiflich für mich. Da bin ich überschwenglich im Glück wenn ich einen Tipp wie den Deinen bekomme der dann eben auch noch funktioniert. Igor PS: Darfs auch Apfelwein sein - davon hats auch noch eine Menge.
participants (2)
-
Igor Warneck
-
Jan.Trippler@t-online.de