Quelqu'un peut-il m'expliquer pourquoi je n'obtiens pas le chemin complet dans l'exemple 1?
exemple 1 - retour d'une ligne trouvée
grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*;
outcome: MODIFY
exemple 2 - retour du chemin 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 commande, résultat / traitement différent.
Réponses:
Dans votre premier exemple, le glob doit avoir été développé en un seul fichier. Dans ce cas, le
grep
préfixe (par défaut) ne précède pas le nom du fichier.Le deuxième exemple doit avoir été étendu à plusieurs noms de fichier et
grep
ajoute le nom de fichier dans ce cas.Vous pouvez utiliser l'
-H
option pour toujours obtenir le nom de fichier ajouté à la sortie, ou-h
pour ne jamais l'obtenir.Si votre grep n'a pas ces options, vous pouvez utiliser
grep REGEX /path/to/pattern/* /dev/null
pour toujours obtenir le nom de fichier (il n'y a jamais de hit/dev/null
mais il compte comme nom de fichier), oucat /path/to/pattern/* | grep REGEX
pour ne jamais obtenir de nom de fichier.la source