Combinação de opções grep totalmente opostas

0

Eu fiz: grep -r -H -L txt ~

e grep -r -l -L txt ~

Ele lista todos os arquivos? Porque eu estou recebendo uma saída muito longa.

    
por Reeshabh Ranjan 23.11.2017 / 12:46

1 resposta

0

Seus dois comandos são exatamente os mesmos ... eles recursam em seu diretório pessoal e listam arquivos que não contêm o padrão 'txt'.

Para provar que eles têm a mesma saída que você pode fazer

diff <(grep -r -H -L txt ~) <(grep -r -l -L txt ~)

Quebrando um pouco ...

grep -r -H -L

é o mesmo que

grep -r -L

-H (nomes de arquivos de impressão) está implícito para qualquer chamada grep que envolva mais de um arquivo. Isso é o que o -L faz, pois lista todos os arquivos que não correspondem ao padrão especificado.

Próximo ...

grep -r -l -L

é o mesmo que

grep -r -L

Isso se deve simplesmente ao fato de que -l e -L são opções conflitantes e, nesses casos, o último sinalizador a ser exibido substitui quaisquer sinalizadores conflitantes anteriores. (Obrigado a @don_crissti por apontar isso.)

Então, você tem, de fato, grep -r -L e grep -r -L .

    
por 23.11.2017 / 13:52