grep imprime o caminho relativo do arquivo ao fazer uma pesquisa recursiva

3

Estou tentando descobrir qual versão do hibernate depende do projeto (isso é ortogonal à minha pergunta).

Temos um projeto pai com vários subprojetos e sei que isso é definido em um ou mais pom.xml . O problema é que quando ele imprime uma correspondência, tudo que está me dizendo é a linha e que ela foi encontrada em pom.xml , quero saber qual subprojeto pom.xml .

Como posso obter grep para imprimir o caminho relativo (o absoluto funcionaria também, mas menos bonito)? Se não for possível, sugestões alternativas serão bem-vindas.

$ grep -rI -3 org.hibernate pom.xml
    
por xenoterracide 30.04.2014 / 19:51

2 respostas

3

Sugiro usar uma combinação de find, xargs e grep:

 cd top-dir
 find . -print -name 'pom.xml' -print0 | xargs -0 grep -l pattern

Eu coloco a opção -print0 / -0 para que os caracteres especiais nos diretórios encontrados sejam protegidos e processados adequadamente.

O texto acima listará o (s) nome (s) do (s) nome (s) relativo (s) ao diretório top-dir correspondente ao padrão.

    
por 30.04.2014 / 19:56
0
grep --with-filename -rI -3 org.hibernate pom.xml

Da página do manual:

       -H, --with-filename
          Print  the  file  name for each match.  This is the default when there is more than one file to
          search.
    
por 01.05.2014 / 03:40