Frage Rekursive Textsuche mit Grep- und Dateimustern


Angesichts dieser Beispiel Ordnerstruktur:

/folder1/file1.txt
/folder1/file2.djd
/folder2/file3.txt
/folder2/file2.fha

Wie mache ich eine rekursive Textsuche für alle? *.txt Dateien mit grep von "/"?

("grep -r <pattern> *.txt" scheitert bei der Ausführung von "/", da es keine gibt .txt Dateien in diesem Ordner.)


44
2018-05-19 11:38


Ursprung




Antworten:


Meine Version von GNU Grep hat dafür einen Schalter:

grep -R --include='*.txt' $Pattern

Beschrieben wie folgt:

--include=GLOB

Suchen Sie nur nach Dateien, deren Basenname mit GLOB übereinstimmt (Verwenden der Platzhalterübereinstimmung wie unter --exclude beschrieben).


58
2018-05-19 12:01





Wenn Sie über eine große Anzahl von Dateien verfügen, ist es hilfreich, XARGs in den Befehl einzufügen, um den Fehler 'Argumentliste zu lang' zu vermeiden.

find . -name '*.txt' -print | xargs grep <pattern>

18
2018-05-19 12:02



Wenn in einem der Datei- oder Verzeichnisnamen Leerzeichen enthalten sind, verwenden Sie das folgende Formular: find. -name '* .txt' -print0 | xargs -0 grep <Muster> - Jason Luther
Und natürlich gibt es das Problem der Dateinamen, die mit beginnen -. - T.J. Crowder
grep ist schneller find. - Nabi K.A.Z.


Sie können vielleicht Ihre verwenden zshist es EXTENDED_GLOB Möglichkeit (Dokumente)

grep <pattern> **/*.txt

1
2018-05-13 07:22



Nur wenn OP zsh verwendet, aber trotzdem interessant. - Law29


find . -name '*.txt' -type f -exec grep <pattern> {} \;

0
2018-05-19 11:43



du könntest stattdessen "find. -name '* .txt' -type f -exec grep <muster> {} +" verwenden, damit es sich eher der von Mark Robinson ähnelt - funktioniert nur mit GNU-find meines Wissens - serverhorror


Mannis Antwort würde für jede Textdatei einen neuen grep-Prozess erzeugen. Wenn Sie haben viele Wenn Sie dort Textdateien speichern, können Sie überlegen, jede Datei zuerst zu überschreiben und dann die TXT-Dateien auszuwählen.

grep -r <pattern> * | grep \.txt:

Das ist mehr plattenintensiv, könnte aber trotzdem schneller sein.


0
2018-05-19 11:46





Vielleicht möchten Sie einen Blick auf Ack werfen http://bettethangrep.com, die Möglichkeiten zur Auswahl von Dateien für die Suche nach Dateityp bietet.


0
2018-05-03 16:54