Pourquoi grep affiche parfois le nom du file, parfois pas?

Est-ce que quelqu'un peut m'expliquer pourquoi je n'ai pas le path complet dans l'exemple 1?

exemple 1 – return de la ligne trouvée

grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*; outcome: MODIFY 

exemple 2 – return du path complet

 grep MODIFY /opt/releases/packages/cr666/sas/dbms/*/*; /opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER; 

J'ai trouvé une solution, mais je veux comprendre ce qui se passe ici. 1 command, résultat / manipulation différent.

Dans votre premier exemple, le glob doit avoir été étendu à un seul file. Dans ce cas, grep ne fait pas (par défaut) précéder le nom du file.

Le deuxième exemple doit avoir été étendu à plusieurs noms de files, et grep ajoute le nom de file dans ce cas.

Vous pouvez utiliser l'option -H pour toujours get le nom de file ajouté à la sortie, ou -h pour ne jamais l'get.

Si votre grep ne dispose pas de ces options, vous pouvez utiliser grep REGEX /path/to/pattern/* /dev/null pour toujours get le nom du file (il n'y a jamais de hit dans /dev/null mais cela count comme nom de file) cat /path/to/pattern/* | grep REGEX cat /path/to/pattern/* | grep REGEX pour ne jamais get un nom de file.