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.