Kann mir bitte jemand erklären, warum ich in Beispiel 1 nicht den vollständigen Pfad erhalte?
Beispiel 1 - Gefundene Zeile zurückgeben
grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*;
outcome: MODIFY
Beispiel 2 - Rückkehr zum vollständigen Pfad
grep MODIFY /opt/releases/packages/cr666/sas/dbms/*/*;
/opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER;
Ich habe eine Lösung gefunden, möchte aber verstehen, was hier passiert. 1 Befehl, unterschiedliches Ergebnis / Behandlung.
Antworten:
In Ihrem ersten Beispiel muss der Glob zu einer einzelnen Datei erweitert worden sein. In diesem Fall wird
grep
der Dateiname nicht (standardmäßig) vorangestellt.Das zweite Beispiel muss auf mehrere Dateinamen erweitert worden sein und
grep
stellt in diesem Fall den Dateinamen voran.Sie können die
-H
Option verwenden, um den Dateinamen immer vor die Ausgabe zu stellen oder-h
um ihn nie abzurufen.Wenn Ihrem grep diese Optionen fehlen, können Sie verwenden,
grep REGEX /path/to/pattern/* /dev/null
um immer den Dateinamen abzurufen (es gibt keinen Treffer,/dev/null
aber er zählt als Dateiname) odercat /path/to/pattern/* | grep REGEX
um nie einen Dateinamen abzurufen.quelle