find . -type f -print0 | xargs -0 sed -i /KeyWord/d
Mit einer OSX sed:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
Der erste Befehl findfindet alle Standarddateien (nicht Verzeichnisse, Pipes usw.) und druckt sie getrennt durch \0(Dateinamen können also Leerzeichen, Zeilenumbrüche usw. enthalten).
Zweiter Befehl xargs liest die Ausgabe von find, holt eine Liste basierend auf einem Trennzeichen ( \0wegen -0), ruft sed -i [...]mit hinzugefügten Parametern aus der Liste auf (sed wird mehrfach aufgerufen, wenn es viele Dateien gibt, da die maximale Länge der Parameter in begrenzt ist jeder Aufruf).
Der sedBefehl ändert an Ort und Stelle (-i ).
Dabei /KeyWord/dwerden Zeilen gelöscht, die den regulären Ausdruck enthaltenKeyWord .
Du solltest lernen sed , die (einfache, aber ungewöhnliche) Syntax richtig zu verstehen, und auf den entsprechenden Hilfeseiten finden Sie weitere Informationen zu den hier verwendeten Tools.
Und wie ich gerne zshbewerbe, die Lösung mit ihren erweiterten Globs:
s/KeyWord//g
(ErsetztKeyWord
durch '' (leere Zeichenfolge)g
für alle (nicht nur die erste in jeder Zeile).Sie können Vim im Ex-Modus verwenden:
g
globale Suched
löschenx
speichern und schließenquelle
find: illegal option -- t
, musste die hinzufügen.
find . -type f -exec ex -sc g/KeyWord/d -cx {} ';'