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 {} \;

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.


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 {} \;

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.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.