grep sem mostrar o caminho / arquivo: linha


234

Como você grep e retorna apenas a linha correspondente? ie O caminho / nome do arquivo é omitido dos resultados.

Nesse caso, desejo procurar em todos os arquivos .bar no diretório atual, procurando o termo FOO

find . -name '*.bar' -exec grep -Hn FOO {} \;

Respostas:


375

Não precisa find. Se você está apenas procurando um padrão em um diretório específico, isso deve ser suficiente:

grep -hn FOO /your/path/*.bar

Onde -hestá o parâmetro para ocultar o nome do arquivo, a partir de man grep:

-h, --no-filename

Suprima a prefixação dos nomes dos arquivos na saída. Esse é o padrão quando há apenas um arquivo (ou apenas entrada padrão) para pesquisar.

Observe que você estava usando

-H, --com o nome do arquivo

Imprima o nome do arquivo para cada correspondência. Esse é o padrão quando há mais de um arquivo para pesquisar.


o número da linha pode ser omitido?
javadba 22/03

@ javadba você provavelmente está usando um alias, digite alias grep. Para omitir o alias, digite\grep ...
fedorqui 'SO stop harming'

1
Sim, estava usando o alias.
javadba 22/03

8

Apenas substitua -Hpor -h. Verifique man greppara mais detalhes sobre as opções

find . -name '*.bar' -exec grep -hn FOO {} \;

6

Na página do manual:

-h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there
    is only one file (or only standard input) to search.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.