Executando find & grep, e inclui path na saída [duplicate]

0

Pelo menos em sistemas CentOS e versões anteriores do Fedora, eu poderia executar o seguinte comando e obter uma lista de arquivos com as correspondências grep correspondentes:

$ find -name "version.php" -type f | xargs grep "^\$wp_version" site.com/wp-includes/version.php:$wp_version = '4.7.3';

Aparentemente, pelo menos no Fedora 22 e mais recente, a execução desse mesmo comando não inclui mais o caminho e os nomes de arquivos:

find -name "version.php" -type f | xargs grep "^\$wp_version" $wp_version = '4.7.3';

Eu sei que posso incluir -l para mostrar apenas o caminho, mas existe uma maneira de incluir o caminho sem perder o jogo? Eu não vejo nada no arquivo do homem.

    
por Michael VanDeMar 16.03.2017 / 20:04

1 resposta

2

CentOS / Fedora, assumindo assim o GNU grep, que tem o seguinte interruptor :

-H, --with-filename
   Print the file name for each match.  This is the default 
   when there is more than one file to search.

Em outras palavras, a diferença de comportamento pode ser justamente que, no primeiro caso, localizar captura mais de um arquivo, fazendo com que grep liste os nomes dos arquivos. Se corresponder apenas a um arquivo no segundo caso, os nomes estarão faltando.

Então, adicione -H manualmente para forçá-lo.

    
por 16.03.2017 / 20:10