Ich versuche einen Weg zu finden, mein gesamtes Linux-System nach allen Dateien zu durchsuchen, die eine bestimmte Textzeichenfolge enthalten. Zur Verdeutlichung suche ich nach Text in der Datei, nicht im Dateinamen.
Als ich nachgeschlagen habe, wie das geht, bin ich zweimal auf diese Lösung gestoßen:
find / -type f -exec grep -H 'text-to-find-here' {} \;
Es funktioniert jedoch nicht. Es scheint jede einzelne Datei im System anzuzeigen.
Ist dies nahe an der richtigen Vorgehensweise? Wenn nicht, wie soll ich? Diese Fähigkeit, Textzeichenfolgen in Dateien zu finden, wäre für einige Programmierprojekte, die ich mache, außerordentlich nützlich.
-H
mit -l
(und vielleicht auch grep
mit fgrep
). Um Dateien mit bestimmten Namensmustern auszuschließen, würden Sie diese find
auf fortgeschrittenere Weise verwenden. Es lohnt sich jedoch zu lernen, wie man es benutzt find
. Einfach man find
.
find … -exec <cmd> +
ist einfacher zu tippen und schneller als find … -exec <cmd> \;
. Dies funktioniert nur, wenn <cmd>
eine beliebige Anzahl von Dateinamenargumenten akzeptiert wird. Die Einsparung an Ausführungszeit ist besonders groß, wenn <cmd>
der Start wie bei Python- oder Ruby-Skripten langsam ist.
grep "pattern" path/*.txt
.
unter anderem jeden als Platzhalter mit einem Zeichen interpretiert . Mein Rat ist, immer entweder fgrep oder egrep zu verwenden.