Wie kann ich mit GNU sed innerhalb eines Verzeichnisses rekursiv alle vorkommen eines Strings ersetzen?

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ührt sed effizient auf mehreren Dateien gleichzeitig aus
  • sed -i: Überschreibt Dateien direkt („in-place“).

Die Antwort auf diese Frage lieferte perplexity.ai.

4 Kommentare zu „Wie kann ich mit GNU sed innerhalb eines Verzeichnisses rekursiv alle vorkommen eines Strings ersetzen?

  1. Runiq

    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.

    Antworten

Antworte auf den Kommentar von Runiq Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert