2017-10-25 4 views
0

So könnte diese Frage zuvor gestellt worden sein, aber nach einigen Stunden der Suche (oder Suche falsch) habe ich mich entschieden, diese Frage zu stellen. Wenn es schon vorher beantwortet wurde, bitte verlinke die Frage und schließe diese.finden Sie Tekst in Dateien in Unterordnern

Hier ist mein Problem.

Ich habe einen Ordner auf meinem Dateisystem, dh "Dateien". Dieser Ordner hat viele Unterordner mit ihren Unterordnern. einige Ebenen tief, sie alle haben eine Datei, die in allen Ordnern gleich heißt. In dieser Datei ist viel Text enthalten, aber es ist nicht ALLES. Ich brauche eine Liste von Dateien, die eine bestimmte Zeichenfolge enthält.

Ich weiß, ich kann dies tun mit

find ./ -type f -exec grep -H 'text-to-find-here' {} \; 

aber das Hauptproblem ist: es wird auf diesem Dateisystem jede einzelne Datei verwinden. ., Wie das Dateisystem MILLIONEN von Dateien enthält, würde dies eine lange Zeit dauern, besonders wenn ich die genaue Datei dieses Stück Text wissen sollten in sein

optisch sieht es wie folgt aus:

foobar/foo/bar/file.txt 
foobar/foobar/bar/file.txt 
foobar/barfoo/bar/file.txt 
foobar/raboof/bar/file.txt 
foobar/oof/bar/file.txt 

Ich brauche eine bestimmte Zeichenkette aus file.txt (wenn diese Zeichenkette existiert ..) (und ja: die Datei in/bar/ist ALLWAYS genannt file.txt ...)

Kann mir jemand helfen, wie man das macht ? Ich breche meinen Kopf auf eine "easy" Lösung: o

Thnx, Daniel

+0

so alle diese Dateien den gleichen Namen haben 'Datei .txt'? – RomanPerekhrest

Antwort

1

Verwenden Sie die -name Option nach Namen filtern:

find . -type f -name file.txt -exec grep -H 'text-to-find-here' {} + 

Und wenn es immer in einem Verzeichnis ist benannt bar, können Sie -path mit einem Platzhalter verwenden:

find . -type f -path '*/bar/file.txt' -exec grep -H 'text-to-find-here' {} + 
0

mit einzelnem GNU grep Befehl:

grep -rl 'pattern' --include=*file.txt 

--include=glob

Suche nur Dateien, deren Name glob, mit Wildcard

Verwandte Themen