Wie finde ich ein Wort rekursiv in allen Dateien und Verzeichnissen?

7

Ich suche nach einem bestimmten Ausdruck in CentOS und bin mir nicht sicher, wo und welche Datei oder sogar welches Verzeichnis die Datei enthält. Wie kann ich eine vollständige rekursive Suche nach einer Phrase durchführen? Vielen Dank

user50946
quelle

Antworten:

16

man grep
In diesem Beispiel grep -i -R "your phrase" directory
-ibedeutet Groß- und Kleinschreibung nicht
-Rbeachten

Wenn Sie nicht wissen, welches Verzeichnis Sie verwenden, verwenden Sie / -, aber seien Sie darauf vorbereitet, dass es lange dauert.

James L.
quelle
Wie gesagt, ich habe keine Ahnung von Verzeichnis
user50946
aktualisiert mit dem Stammverzeichnis. Es wird allerdings lange dauern.
James L
Ich habe getan, was Sie gesagt haben, aber es gibt viele Aufzeichnungen. Gibt es eine Möglichkeit, dies in einer Textdatei zu speichern?
user50946
3
Lesen Sie mehr über Rohrleitungen und Weiterleitungen. > speichert in einer Datei, >> hängt an eine Datei an und | Rohre zu einem Prozess. In diesem Fall sollten Sie also grep -i -R "your phrase" directory > /path/to/your/textfileauch -l zu den grep-Argumenten hinzufügen, wenn Sie nur eine Liste der Dateien wünschen (gemäß @Richard Holloway
James L,
1
Sie können die Ausgabe in eine Datei mit umleiten grep -i -R "your phrase" directory > myfile.txt, oder Sie könnten weniger verwenden, um das Ergebnis mit anzuzeigengrep -i -R "your phrase" directory | less
Avada Kedavra
4

Mit diesem einen Liner können Sie eine Liste aller Dateien in diesem Ordner und in den Unterordnern abrufen, die den Ausdruck "Der Ausdruck, den ich suche" enthalten.

  find . -print0 | xargs -0 grep "The phrase I am looking for" -l
Richard Holloway
quelle
1
Fügt dies eine Funktionalität über das rekursive Flag von grep hinzu?
James L
@James: Nein. Ich verwende es hauptsächlich, um die zusätzliche Suchfunktion zu erhalten, z. B. die Angabe von Dateinamenerweiterungen (z. B. mit -name "* .php") usw. In diesem Beispiel wird jedoch nichts hinzugefügt.
Richard Holloway
Ich bin auch ein Pfeifenmissbraucher. Sobald Sie sich daran gewöhnt haben, ist es schwer aufzuhören!
Pause
Meine Server kosten genug Geld und machen so wenig dafür. Was sind hier und da ein paar zusätzliche Prozesse? :)
Richard Holloway
2

Ich würde empfehlenack .

Gehen Sie zu dem obersten Verzeichnis, das Sie zu suchen wagen, und geben Sie Folgendes ein:

ack -a "Phrase"

Ich benutze grep wegen nicht mehr wirklich ack.

Christopher Bottoms
quelle
ack ist großartig. Sie können es unter CentOS über das Repo von rpmforge installieren. Weitere Informationen zum Einrichten finden Sie unter rpmrepo.org/RPMforge/Using .
Richard Holloway