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


Ich suche einen bestimmten Ausdruck in CentOS und ich bin mir nicht sicher, wo und welche Datei oder sogar Verzeichnis, das die Datei hat. Wie kann ich eine komplette rekursive Suche nach einer Phrase durchführen? Vielen Dank


7
2017-09-24 13:41


Ursprung




Antworten:


man grep
Für dieses Beispiel grep -i -R "your phrase" directory
-i bedeutet Groß- und Kleinschreibung
-R bedeutet rekursiv

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


15
2017-09-24 13:44



Wie gesagt, ich habe keine Ahnung von Verzeichnis - user50946
aktualisiert mit dem Stammverzeichnis. Es wird jedoch lange dauern. - James L
Ich habe getan, was Sie gesagt haben, aber es gibt eine Menge von Aufzeichnungen..ist es eine Möglichkeit, dies in Textdatei zu speichern? - user50946
Lesen Sie über Rohrleitungen und Weiterleitungen. > speichert in einer Datei, >> hängt an eine Datei und | an Rohre zu einem Prozess. Also, in diesem Fall, grep -i -R "your phrase" directory > /path/to/your/textfile - Denken Sie auch daran, den grep-Argumenten -l hinzuzufügen, wenn Sie nur eine Liste der Dateien haben wollen (laut @Richard Holloway) - James L
Sie können die Ausgabe in eine Datei mit umleiten grep -i -R "your phrase" directory > myfile.txtoder Sie können weniger verwenden, um das Ergebnis mit anzuzeigen grep -i -R "your phrase" directory | less - Avada Kedavra


Sie können diesen einen Liner verwenden, um eine Liste aller Dateien in diesem Ordner und den Unterordnern zu erhalten, die den Ausdruck "Der Satz, nach dem ich suche" enthalten.

  find . -print0 | xargs -0 grep "The phrase I am looking for" -l

4
2017-09-24 13:45



Fügt dies irgendeine Funktionalität über das rekursive Flag von Grep hinzu? - James L
@ James: Nein. Ich benutze es hauptsächlich, um die zusätzliche Suchfunktionalität zu bekommen, wie Dateinamenerweiterungen anzugeben (zB mit -name "* .php"), aber in diesem Beispiel fügt es nichts hinzu. - Richard Holloway
Ich bin auch ein Rohrmissbraucher. Sobald Sie daran gewöhnt sind, ist es schwer zu stoppen! - pauska
Meine Server kosten genug Geld und tun im Gegenzug so wenig, was sind ein paar zusätzliche Prozesse hier und da? :) - Richard Holloway


ich würde empfehlen ack.

Gehe in das Verzeichnis der obersten Ebene, das du suchst, und tippe dann:

ack -a "Phrase"

Ich benutze Grep nicht mehr wegen ack.


2
2017-09-24 16:39



Ack ist großartig. Sie können es auf CentOS vom RPMforge Repo installieren. Sehen rpmrepo.org/RPMforge/Using für Details darüber, wie Sie dies einrichten. - Richard Holloway