Wie kann man alle Dateien finden, die spezifischen Text auf Linux enthalten

Viele neue Datei-Manager unterstützen das Durchsuchen einer Datei nur in der Dateiliste. Irgendwie ermöglichen die meisten nicht, innerhalb eines Contents der Datei zu suchen. Hier sind einige Methoden, die Sie verwenden können, um nach Dateiinhalt auf Linux mit der Befehlszeile zu suchen. In diesem Schnippet sind die Befehle “grep”, “rigrep”, “ack” und “find” ausführlich beschrieben.

  1. Verwenden Sie das Werkzeug grep, um die Dateien zu finden, die spezifischen Text auf Linux enthalten. Dafür folgen Sie diesen Schritten:
  • Eröffnen Sie Ihre Lieblingsterminal-App.
  • Steuern Sie (falls notwendig) zum Ordner, wo Sie die Dateien mit einem spezifischen Text suchen möchten.
  • Tippen Sie den folgenden Befehl:
grep -iRl "your-text-to-find" ./

Hier steht i für ignore case, -R steht für recursive, -l steht für "show the file name, not the result itself" und ./ stands steht für den Start am Anfang Ihrer Maschine.

Es gibt weitere nützliche Parameter, die Sie mit grep verwenden können:

  • -n: zeigt die Zeilennummer an.
  • -w: entspricht dem ganzen Wort.
  • -h: gibt nur die Zeile aus, die übereinstimmt (nicht der Dateiname).
  • -s: Fehlermeldungen über nicht existierende oder nicht lesbare Dateien unterdrücken.
  1. Alternative Verwendung für grep ist rigrep. Wenn Sie an großen Projekten oder großen Dateien arbeiten, ist es besser ripgrep zu verwenden. Es wird so aussehen:
rg "your-text-to-find" /
  1. Verwenden Sie ack. Es ist wie grep für Quellcode.
ack 'your-text-to-find' /
Empfehlung: Für die Befehle rigrep und ack verwenden Sie reguläre Ausdrücke, um den Dateityp anzugeben.
  1. Verwenden Sie den Befehl find.
# find / -exec grep -l “your-text-to-find” {} ;

Um in bestimmten Dateierweiterungs Dateien zu suchen. Wie bei der Suche nach'your-text' nur in allen php-Dateien, verwenden Sie den folgenden Befehl.

# find / -name '*.php' -exec grep -l "your-text" {} ;