É o grep
que está "pendente". Quando grep
é executado sem um nome de arquivo para ler, ele lê a entrada padrão. Se você não fornecer nenhum dado na entrada padrão, ele aparecerá "travado".
Você também está dando um loop pela saída de find
. Isso é deselegante (o loop não será executado até que todos os nomes de caminho tenham sido encontrados por find
) e perigoso (os nomes de caminho serão divididos em espaços em branco e o shell executará a globalização de nomes de arquivo neles).
Em vez disso, se você quiser executar grep
em todos os arquivos com um sufixo de nome de arquivo específico:
find . -type f -name '*.md' -exec grep -iF 'heaq' {} +
Eu alterei a coisa -regex
para um teste -name
padrão com um padrão que corresponde apenas aos nomes de arquivo com um sufixo .md
do nome do arquivo. Eu também adicionei -type f
, pois só faz sentido executar grep
em arquivos regulares (você pode querer alterar -type f
para ! -type d
para executá-lo em qualquer não-diretório).
O grep
é executado através de -exec
em lotes nos nomes de caminhos encontrados. Estou usando -F
com grep
, pois estamos combinando uma string, não uma expressão regular. Você pode adicionar -w
se quiser corresponder uma palavra em vez de qualquer substring.
Relacionados: