find . -type f -print0 | xargs -0 sed -i /KeyWord/d
Avec un sed OSX:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
La première commande findrecherche tous les fichiers standard (pas les répertoires, les canaux ou etc.), les imprime séparés par \0(afin que les noms de fichiers puissent contenir des espaces, des nouvelles lignes, etc.).
La deuxième commande xargslit la sortie de find, récupère une liste basée sur un séparateur (à \0cause de -0), appelle sed -i [...]avec des paramètres ajoutés à partir de la liste ( sedsera appelée plusieurs fois s'il y a beaucoup de fichiers, car la longueur maximale des paramètres est limitée dans chaque invocation).
La sedcommande modifie in-place ( -i).
Quant à /KeyWord/d, il supprimera les lignes contenant l'expression régulière KeyWord.
Vous devez apprendre sedà bien comprendre la syntaxe (simple mais inhabituelle) et vous référer aux pages de manuel appropriées pour plus d'informations sur les outils impliqués ici.
Et comme j'aime promouvoir zsh, la solution avec ses globes étendus:
s/KeyWord//g
(remplaceKeyWord
par '' (chaîne vide),g
pour tous (pas seulement le premier sur chaque ligne).Vous pouvez utiliser Vim en mode Ex:
g
recherche globaled
supprimerx
sauver et fermerla source
find: illegal option -- t
, a dû ajouter le.
find . -type f -exec ex -sc g/KeyWord/d -cx {} ';'