cita arquivos correspondidos por grep

0

página man do grep lê

"grep -lZ outputs a zero byte after each file name instead of the usual newline"

Mas no meu caso, existem arquivos na saída que ainda precisam de cotações. Para que isso funcione:

/usr/bin/grep -rlZ 'Not Found'|xargs -0 rm

o -w em um nome de arquivo como -webkit-stuff.html não deve ser interpretado como uma opção para rm. Então, atualmente estou fazendo isso:

/usr/bin/grep -rlZ 'Not Found'|\
xargs -0 -I{} find . -type f -name {} -print0 | xargs -0 rm

Isso não é eficiente. Existe uma versão do grep que tenha "um melhor -print0 "?

Como você faria isso?

    
por Bart 02.08.2018 / 18:56

1 resposta

4

Você poderia usar

/usr/bin/grep -rlZ 'Not Found' | xargs -0 -r rm --

em que -- impede que o utilitário interprete nada posteriormente como uma opção ou

/usr/bin/grep -rlZ 'Not Found' . | xargs -0 -r rm

que faria com que grep prefixasse os nomes de caminho de todos os arquivos com ./ . A opção -r para xargs faz com que xargs não execute o comando se não receber entrada de grep (ou seja, se nenhum arquivo contiver a sequência).

Eu pessoalmente provavelmente teria usado find embora:

find . -type f -exec grep -qF 'Not found' {} ';' -delete

(o que eu acho faz a mesma coisa: excluindo recursivamente os arquivos que contém a string Not found )

    
por 02.08.2018 / 19:04

Tags