Existe a opção 'find''s' -exec 'em' ack-grep '?

3

Eu quero remover todos os textos que incluem a string foo .

Eu posso listar todos os arquivos por ack-grep foo , mas não consegui encontrar uma maneira de remover todos os arquivos como -exec rm {} como find .

Como posso excluir todos os arquivos que contêm uma string específica?

    
por ironsand 01.04.2015 / 10:52

2 respostas

5

Com o GNU xargs :

ack -l --print0 foo | xargs -r0 rm --

O --print0 e xargs ' -0 do ack fazem com que ack e xargs escrevam e leiam usando o NUL como delimitador, o que garante o manuseio correto do nome do arquivo. Sem ele, xargs aceitará um intervalo muito maior de caracteres como um delimitador.

    
por 01.04.2015 / 11:47
1

Você pode usar a opção -l com grep e ack, que lista apenas o nome do arquivo:

grep -l --null foo ./* | xargs -r0 rm

ou:

ack -l --print0 foo ./* | xargs -r0 rm --
    
por 01.04.2015 / 11:36

Tags