2017-04-01 9 views
0

Ich möchte alle Caret-Zeichen aus allen Dateien im aktuellen Verzeichnis entfernen. Bitte helfen Sie.Wie rekursiv das Caret (^) Zeichen rekursiv in allen Dateien in einem Verzeichnis entfernen?

+3

1) Auf diese Weise arbeitet sed auf stdin und schreibt auf stdout. Um Dateien zu bearbeiten und zurückzuspeichern, benötigen Sie das '-i' Flag sowie den Dateinamen, was Sie innerhalb eines' find -exec' Befehls mit '{}' erreichen können. 2) Dein Befehl entfernt nicht einfach die Einträge, sondern ersetzt sie durch Kommas. – Siguza

+0

können Sie auch 'maxdepth' hinzufügen. – karakfa

+0

Nein, das wird nicht funktionieren - es wird nichts tun, aber es wird niemals enden. – agc

Antwort

1

Sie müssen sed anweisen, die Datei an Ort und Stelle zu bearbeiten, indem Sie die -i-Option angeben, andernfalls wird sed in ihr stdout schreiben. Sie geben keine Dateinamen an sed weiter. Verwenden Sie {} Syntax von find, um übereinstimmende Dateinamen zu übergeben.

find . -type f -exec sed -i 's/\^//g' {} \; 

Bitte beachten Sie, dass Sie den Ersetzungsteil der Ersetzung leer lassen müssen, um übereinstimmende Muster durch nichts zu ersetzen.

Verwandte Themen