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

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

Ich habe eine verschachtelte Ordnerstruktur mit vielen Ordnern und Dateien.

Wie suche ich in Dateien nach einem Muster, z. B. „Beispieltext“, aber nur, wenn der Dateiname einem Muster entspricht (z. B. nur in Dateien mit der Erweiterung .txt suchen) und der Name des enthaltenen Ordners schließlich einem anderen Muster entsprechen muss? (z. B. „Daten“).

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

Dank im Voraus

Antwort1

Da Sie sagen, dass Sie eine verschachtelte Ordnerstruktur haben, glaube ich, dass *data*/*txtdies nicht das ist, was Sie brauchen. Ich schlage vor

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

Dies /dev/nulldient dazu, grepdie Anzeige des Dateinamens zu erzwingen, auch wenn es in einem Verzeichnis ausgeführt wird, das nur eine .txtDatei enthält.

verwandte Informationen