Com um sed GNU:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
Com um sed do OSX:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
Primeiro comando find
encontra todos os arquivos padrão (não diretórios, canos ou etc.), imprime-os separados por \0
(assim, os nomes de arquivos podem conter espaços, novas linhas, etc.).
Segundo comando xargs
lê a saída de find
, pega uma lista baseada em um separador ( \0
por causa de -0
), invoca sed -i [...]
com parâmetros adicionados da lista ( sed
será chamado várias vezes se houver muitos arquivos, já que o comprimento máximo dos parâmetros é limitado em cada chamada).
o sed
comando modifica in-loco ( -i
).
Quanto a /KeyWord/d
, ele irá deletar linhas contendo a expressão regular KeyWord
.
Você deveria aprender sed
para entender adequadamente a sintaxe (simples, mas incomum) e consulte as páginas de manual apropriadas para obter mais informações sobre as ferramentas envolvidas aqui.
E como eu gosto de promover zsh
, a solução com seus globs estendidos:
sed -i /KeyWord/d **/*(.)