grep ohne Pfad / Datei anzuzeigen: Zeile

234

Wie grepst du und gibst nur die passende Zeile zurück? dh Der Pfad / Dateiname wird in den Ergebnissen weggelassen.

In diesem Fall möchte ich in allen .bar-Dateien im aktuellen Verzeichnis nach dem Begriff FOO suchen

find . -name '*.bar' -exec grep -Hn FOO {} \;
Allan Thomas
quelle

Antworten:

375

Keine Notwendigkeit find. Wenn Sie nur nach einem Muster in einem bestimmten Verzeichnis suchen, sollte dies ausreichen:

grep -hn FOO /your/path/*.bar

Wo -hist der Parameter die Dateinamen zu verstecken, wie es aus man grep:

-h, --no-Dateiname

Unterdrücken Sie das Präfix von Dateinamen bei der Ausgabe. Dies ist die Standardeinstellung, wenn nur eine Datei (oder nur eine Standardeingabe) durchsucht werden soll.

Beachten Sie, dass Sie verwendet haben

-H, --mit Dateiname

Drucken Sie den Dateinamen für jede Übereinstimmung. Dies ist die Standardeinstellung, wenn mehr als eine Datei durchsucht werden muss.

fedorqui 'SO hör auf zu schaden'
quelle
Kann die Zeilennummer weggelassen werden?
Javadba
@javadba Sie verwenden wahrscheinlich einen Alias, Typ alias grep. Um den Alias ​​wegzulassen, geben Sie\grep ...
fedorqui 'SO hör auf zu schaden'
1
Ja, es wurde der Alias ​​verwendet.
Javadba
8

Ersetzen Sie einfach -Hmit -h. Überprüfen Sie, man grepum weitere Informationen zu den Optionen

find . -name '*.bar' -exec grep -hn FOO {} \;
jkshah
quelle
6

Von der Manpage:

-h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there
    is only one file (or only standard input) to search.
TC1
quelle