Ich versuche mein Rails-Verzeichnis mit grep zu durchsuchen. Ich suche nach einem bestimmten Wort und möchte grep, um den Dateinamen und die Zeilennummer auszudrucken.
Gibt es eine Grep-Flagge, die dies für mich erledigt? Ich habe versucht, eine Kombination aus -n
und zu verwenden, -l
aber diese drucken entweder die Dateinamen ohne Nummern aus oder geben einfach viel Text an das Terminal aus, der nicht leicht zu lesen ist.
Ex:
grep -ln "search" *
Muss ich es auf awk leiten?
Antworten:
Ich denke, es
-l
ist zu restriktiv, da es die Ausgabe von unterdrückt-n
. Ich würde vorschlagen-H
(--with-filename
): Drucken Sie den Dateinamen für jede Übereinstimmung.Wenn dies zu viel Ausgabe ergibt, versuchen Sie
-o
, nur den passenden Teil zu drucken.quelle
Dies würde bedeuten, rekursiv zu suchen (
searchstring
in diesem Beispiel nach der Zeichenfolge ), Groß- und Kleinschreibung zu ignorieren und Zeilennummern anzuzeigen. Die Ausgabe von diesem grep sieht ungefähr so aus:Als nächstes leiten wir dieses Ergebnis an den Befehl cut weiter, indem wir Doppelpunkt
:
als Feldtrennzeichen verwenden und die Felder 1 bis 2 anzeigen.Wenn ich die Zeilennummern, die ich häufig verwende
-f1
(nur den Dateinamen und den Pfad), nicht benötige, leite ich die Ausgabe an weiteruniq
, sodass ich jeden Dateinamen nur einmal sehe:quelle
Ich benutze gerne:
grep -niro 'searchstring' <path>
Aber das liegt nur daran, dass ich immer die anderen Wege vergesse und Robert de
grep -
niro aus irgendeinem Grund nicht vergessen kann :)quelle
Der Kommentar von @ToreAurstad kann geschrieben werden
grep -Horn 'search' ./
, was leichter zu merken ist.grep -HEroine 'search' ./
könnte auch funktionieren;)Für Neugierige:
quelle
So habe ich die hochgestufte Antwort verwendet, um einen Baum zu durchsuchen, um die fortran-Dateien zu finden, die eine Zeichenfolge enthalten:
Ohne das nHo erfahren Sie nur, dass eine Datei irgendwo mit der Zeichenfolge übereinstimmt.
quelle