Alguém pode me explicar por que não obtenho o caminho completo no exemplo 1?
exemplo 1 - retornando linha encontrada
grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*;
outcome: MODIFY
exemplo 2 - retornando caminho completo
grep MODIFY /opt/releases/packages/cr666/sas/dbms/*/*;
/opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER;
Eu encontrei uma solução, mas quero entender o que está acontecendo aqui. 1 comando, resultado / manuseio diferentes.
Respostas:
No seu primeiro exemplo, a glob deve ter se expandido para um único arquivo. Nesse caso,
grep
(por padrão) não precede o nome do arquivo.O segundo exemplo deve ter se expandido para vários nomes de arquivos e
grep
, antes disso, precede o nome do arquivo.Você pode usar a
-H
opção para sempre obter o nome do arquivo anexado à saída ou-h
nunca para obtê-lo.Se o seu grep não possui essas opções, você pode
grep REGEX /path/to/pattern/* /dev/null
sempre usar o nome do arquivo (nunca há nenhum acerto,/dev/null
mas ele conta como um nome de arquivo) oucat /path/to/pattern/* | grep REGEX
nunca obter um nome de arquivo.fonte