Rekursives Suchen nach bestimmtem Text in bestimmten Dateien, jedoch nur in bestimmten Ordnern

417
jon

Ich habe eine verschachtelte Ordnerstruktur, die viele Ordner und Dateien enthält.

Wie kann ich in Dateien nach einem Muster suchen, z. B. "Sampletext", aber nur, wenn der Dateiname mit einem Muster übereinstimmt (z. B. nur in Dateien mit der Erweiterung .txt suchen) und schließlich der enthaltene Ordnername mit einem anderen Muster übereinstimmen muss? (zB "Daten").

Ich bin mir sicher, dass ich dazu ein Shell-Skript schreiben könnte, aber ich bin sicher, dass es clevere Einzeiler gibt, die mir neue Dinge beibringen werden!

Danke im Voraus

1

1 Antwort auf die Frage

2
Scott

Da Sie sagen, Sie haben eine verschachtelte Ordnerstruktur, glaube *data*/*txtich nicht, was Sie brauchen. Ich schlage vor

find . –type d –name "*data*" –exec sh –c "grep sampletext /dev/null {}/*.txt" \; 

Das /dev/nullist da, um grepdie Anzeige des Dateinamens zu erzwingen, auch wenn er in einem Verzeichnis ausgeführt wird, das nur eine .txtDatei enthält.