Wie kann in bestimmten Dateitypen nach bestimmten Texten gesucht werden? [Duplikat]

13

Mögliches Duplikat:
Wie kann ich Quelldateien nach Text durchsuchen?

Wie lautet der Befehl zum rekursiven Suchen nach bestimmten Texten in bestimmten Dateitypen im aktuellen Verzeichnis?

Phillip
quelle
Was möchten Sie zurückgeben? In welcher Zeile steht der Text? Der Name der Datei, in der sich der Text befindet?
MaQleod
@MaQleod: Das wäre gut (Dateiname + Leinennummer + Snippet), wenn das möglich ist.
Phillip
@slhck: ack-grep ist nicht installiert; Ich habe nicht die Berechtigung, es zu installieren.
Phillip
1
Das würdest du nicht brauchen ack-grep, du kannst die Beispiele in der Frage als gestartet verwenden (wie ich schon sagte), also die find | xargs | grepZeilen. Für die spezifische Ausgabe man grepist es immer nützlich zu lesen.
Slhck
@slhck: Danke, also habe ich das gemacht grep -r --include=*.<type> "<string>" ., was funktioniert hat. Leider ist die Manpage beim Erwähnen des abschließenden Punkts nicht sehr einfach.
Phillip

Antworten:

11
find . -type f -name '*.extension' | xargs grep "string"

Dieser Befehl führt find im lokalen Verzeichnis (.) Für alle Dateien mit Namen aus, die dem Muster * .extension entsprechen, und führt dann grep für "string" für die Ergebnisse der Suche aus . Beachten Sie, dass find von Natur aus rekursiv ist. Solange Sie die gewünschten Dateien von den Dateien unterscheiden können, die nicht auf dem Namen basieren, sollte dies für Sie funktionieren.

Fopedush
quelle
2
Dies bricht mit Dateinamen, die Leerzeichen enthalten, Sie sollten die print0Option verwenden, um sicherer zu sein.
Slhck
Nur find -print0wird nicht helfen, auch verwenden xargs -0:find . -type f -name "*.ext" -print0 | xargs -0 grep "string"
BurninLeo
0

Um den Dateinamen, die Zeilennummer in der angegebenen Datei und die Zeile aufzulisten, wird der Text angezeigt:

for x in *.xxx; do [ -r $x ] | cat $x | grep -n TEXT | xargs printf "$x:%s\n";done

Es wird nur im aktuellen Verzeichnis ausgeführt, aber es wird es schön für Sie formatieren.

MaQleod
quelle