How can I find the relevant files and exit with a non-zero code when any are found?
canalize o resultado para grep ''
. A ferramenta não alterará o fluxo de texto, mas gerará o status de saída 0
ou 1
dependendo se alguma linha passar por ela ou não.
Eu sei que você quer do outro jeito. Se eu fosse você, aceitaria o comportamento de grep
. Meu raciocínio é: você quer conhecer arquivos que atendam aos seus critérios; o comando os encontra, então sucede ao descobrir se há pelo menos um arquivo.
No entanto, se você insistir no comportamento oposto, apenas negue o status de saída . Exemplo:
! find . -name "*.xyz" -exec sh -c 'grep -L "$(basename "$1")" "$1"' sh {} \; | grep ''
Note que depurei a sua invocação sh
dentro de find
. Sua abordagem original se sairia em falso se {}
fosse expandido para ./a;rm -rf ~;.xyz
(é um nome de arquivo válido em muitos sistemas de arquivos Linux).