Com um GNU sed:
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
O primeiro comando find
encontra todos os arquivos padrão (não diretórios, ou pipes, etc.), os imprime separados por
(para que os nomes de arquivos possam conter espaços, novas linhas, etc.). xargs
Segundo comando find
lê a saída de
, pega uma lista baseada em um separador ( -0
sed -i [...]
por causa de sed
), chama sed
com parâmetros adicionados da lista ( -i
será chamado várias vezes se houver muitos arquivos, pois o comprimento máximo dos parâmetros é limitado em cada chamada).
O comando /KeyWord/d
modifica no local ( KeyWord
).
Quanto a sed
, ele excluirá as linhas que contêm a expressão regular zsh
.
Você deve aprender %code% a entender corretamente a sintaxe (simples, mas incomum) e consultar as páginas de manual apropriadas para obter mais informações sobre as ferramentas envolvidas aqui.
E como gosto de promover %code% , a solução com seus globs estendidos:
sed -i /KeyWord/d **/*(.)