Verwende find mit sed für die rekursive Textersetzung in allen Dateien:
find . -type f -exec sed -i 's/foo/bar/g' {} +
-type f: Bearbeitet nur Dateien (keine Verzeichnisse)-exec ... +: Führtsedeffizient auf mehreren Dateien gleichzeitig aussed -i: Überschreibt Dateien direkt („in-place“).
Die Antwort auf diese Frage lieferte perplexity.ai.
Geht aber nur mit GNU sed, -i braucht in anderen seds explizit einen Parameter für die Dateiendung.
Danke für deinen Hinweis. Ich habe den Titel angepasst, so dass deutlich wird, dass es sich um GNU sed handelt.
VG
Jörg
replace „foo“ „bar“ — $PATH/*
Falls du auch mit Dateien hantieren willst, die Leerzeilen und andere Späße im Dateinamen haben, musst du xargs benutzen:
find . -type f -print0 | xargs -0 sed -i ’s/foo/bar/g‘
Bei allem, was mit `find -exec` oder `xargs` zu tun hat, am besten zunächst ein `echo` voranstellen, damit man sieht, was genau ausgeführt wird.