So finden Sie ein bestimmtes Wort in einer Datei unter Linux

Grep-Fenster

Standardmäßig betrachten die meisten Suchwerkzeuge die Dateinamen, nicht den Dateinhalt. Das bekannteste GNU-Suchprogramm, grep, durchsucht jedoch Dateien mit den richtigen Flags. Hier zeigen wir Ihnen, wie Sie bestimmte Wörter in einer Datei unter Linux finden können.

Inhaltsverzeichnis

  • Verwendung von grep, um ein bestimmtes Wort in einer Datei zu finden
  • Verwendung von find, um ein bestimmtes Wort in einer Datei zu finden
  • Verwendung von ack, um ein bestimmtes Wort in einer Datei zu finden
  • Möchten Sie eine GUI? Verwenden Sie Catfish
  • Häufig gestellte Fragen

Auch lesen: So finden Sie große Dateien in Linux

Verwendung von grep, um ein bestimmtes Wort in einer Datei zu finden

Standardmäßig durchsucht grep den Inhalt von Dateien sowie deren Dateinamen. Es ist auf den meisten Linux-Systemen enthalten und ist in der Regel über Distros hinweg identisch. Programmierer, die den Dateinhalt ihrer Projekte durchsuchen, ziehen es möglicherweise vor, einen anderen Befehl wie ack auszuführen.

Je nach Codierung der Datei kann grep manchmal nicht im Inneren suchen. Aber für die meisten textbasierten Formate kann grep den Text der Datei nach dem angegebenen Muster durchsuchen.

grep -rw '/path/to/search/' -e 'pattern'
  • Das Flag -r versetzt grep in den rekursiven Modus und navigiert durch alle Verzeichnisse, die im angegebenen Verzeichnis enthalten sind.
  • Das Flag -w sucht nach vollständigen Wortübereinstimmungen. Das bedeutet, dass “rot” nur dem tatsächlichen Wort “rot” entspricht und nicht jeder Buchstabenkombination, die es enthält, wie “ rot undant” oder “ti rot.” Dies geschieht, indem nur nach “rot” gesucht wird, das von sogenannten Nicht-Wort-Zeichen umgeben ist (d.h. alles, was kein Buchstabe, Zahl oder Unterstrich ist).
  • Das Flag -e leitet das Muster ein, nach dem gesucht werden soll. Es unterstützt standardmäßig reguläre Ausdrücke.

Um grep zu beschleunigen, können Sie die Flags --exclude und --include verwenden, um die Suche auf bestimmte Dateitypen zu beschränken. Zum Beispiel wird --exclude='*.csv' nicht in Dateien mit der Erweiterung .csv suchen. --include='*.txt' sucht hingegen nur in Dateien mit der Erweiterung .txt. Das Flag kann direkt nach dem grep-Befehl hinzugefügt werden, wie unten dargestellt:

grep --exclude='*.csv' -Rw '/path/to/search' -e 'pattern'

Sie können auch bestimmte Verzeichnisse ausschließen, indem Sie das folgende Format verwenden:

grep --exclude-dir='{dir1,dir2,*_old}' -Rw '/path/to/search' -e 'pattern'

Dieser Befehl sucht nicht in Verzeichnissen im aktuellen Arbeitsverzeichnis mit den Namen dir1, dir2 oder die dem Muster *_old entsprechen, wodurch sie aus dem Suchprozess ausgeschlossen werden. Er führt die angegebene rekursive Suche nach vollständiger Wortübereinstimmung in allen anderen Dateien im aktuellen Arbeitsverzeichnis aus.

Interessante Flags, die Sie mit grep verwenden können

Jetzt, wo Sie gut mit grep und seiner Funktionsweise vertraut sind, hier einige nützliche Flags, die Sie an Ihrem Befehl anhängen können:

  • -i – Macht grep zu einer nicht fallunempfindlichen Suche. Wenn Sie zum Beispiel nach “Kraken” suchen, wird ein Ergebnis zurückgegeben, wenn grep Übereinstimmungen für “kraken” oder “kRaken” findet.
  • -n – Zeigt die Zeilennummern neben den Übereinstimmungen an. Dies ist besonders nützlich für Programmierer oder Personen, die große Konfigurationsdateien durchsuchen.
  • -R – Wie bei -r führt grep eine rekursive Suche durch alle Unterordner durch, aber dieses spezielle Flag folgt symbolischen Links (Verknüpfungen).
  • -s – Unterdrückt Fehlermeldungen. Wenn Sie viele ablenkende Fehlermeldungen über Dateien erhalten, die nicht existieren, nicht gelesen werden können oder falsche Berechtigungen haben, verwenden Sie dies, damit grep Ihnen nur die Übereinstimmungen anzeigen kann, die es findet.

Auch lesen: So finden Sie eine Datei in Linux mithilfe des find-Befehls

Verwendung von find, um ein bestimmtes Wort in einer Datei zu finden

Obwohl die Syntax des find-Befehls komplizierter ist als bei grep, ziehen es einige vor.

find . -name "*.php" -exec grep "pattern" {} ;

Dieser Befehl verwendet das -exec-Flag von find, um die gefundenen Dateien an grep zum Suchen weiterzugeben. Mit einer cleveren Anordnung der Syntax können Sie die schnellere Dateisystemsuche von find verwenden, um die spezifischen Dateitypen zu finden, in denen Sie suchen möchten, und sie dann an grep weiterleiten, um in den Dateien zu suchen.

Beachten Sie, dass find nur die Dateinamen und nicht den Inhalt betrachtet. Deshalb ist grep erforderlich, um den Text und den Inhalt von Dateien zu durchsuchen. Die normalen grep-Flags sollten innerhalb des -exec-Flags vollständig funktionsfähig sein.

Verwendung von ack, um ein bestimmtes Wort in einer Datei zu finden

Der ack-Befehl ist wahrscheinlich das schnellste Suchwerkzeug, ist jedoch nicht so beliebt wie grep. Der folgende Befehl sucht im aktuellen Verzeichnis.

ack 'pattern'

Wenn Sie in einer bestimmten Datei oder einem bestimmten Verzeichnis suchen möchten, können Sie diese Datei oder den vollständig qualifizierten Pfad zu Ihrer Suche hinzufügen.

ack 'pattern' /path/to/file.txt

Auch lesen: So installieren und verwalten Sie Python-Versionen in Linux

Möchten Sie eine GUI? Verwenden Sie Catfish

Wenn Sie allergisch auf Terminals reagieren, bieten alle gängigen Linux-Distributionen Catfish an, eine vielseitige GUI-Anwendung, mit der Sie Dateien und deren Inhalte nach einer bestimmten Zeichenfolge durchsuchen können. Es ist nicht so fortgeschritten wie die hier besprochenen Befehle, bietet jedoch einen wertvollen Service für Personen, die eine grafische Benutzeroberfläche bevorzugen.

Grep Catfishgui

Um den Inhalt von Dateien nach einem bestimmten Wort zu durchsuchen, klicken Sie im oberen rechten Bereich von Catfish auf das Menü und wählen Sie “Dateiinhalte durchsuchen”.

Nachdem Sie es eingerichtet haben, geben Sie in die obere Leiste ein, wonach Sie suchen möchten, und drücken Sie die Eingabetaste. Das war’s!

Auch lesen: Die Unterschiede zwischen Su, Sudo Su, Sudo -s und Sudo -i

Häufig gestellte Fragen

Wie kann ich eine grep-Suche stoppen, bevor sie abgeschlossen ist?

Um einen laufenden Prozess in Ihrem Terminal zu stoppen, drücken Sie einfach die Tasten Strg + C auf Ihrer Tastatur. Dies sendet ein Signal, um den laufenden Prozess zu beenden. Das ist auch der Grund, warum Sie keine normalen Kopieren/Einfügen-Shortcuts innerhalb eines Terminalemulators verwenden können.

Gibt es Datei-Manager, die den Inhalt von Dateien durchsuchen?

Wenn Sie die KDE Plasma-Desktopumgebung verwenden, hat ihr standardmäßiger Datei-Manager (Dolphin) bereits diese Fähigkeit. Wenn Sie auf die Schaltfläche “Suchen” klicken, um nach Dateien zu suchen, gibt es eine Option, zwischen Dateinamen und Dateiinhalten unter der Suchleiste zu wählen.

Klicken Sie einfach auf “Inhalt”, wenn Sie nach Wörtern innerhalb von Dateien suchen möchten. Es wird nicht so fortgeschritten sein wie mit grep, erfüllt aber seinen Zweck.

Gibt es andere Verwendungen für grep?

Grep ist nicht nur zum Suchen Ihres Dateisystems gedacht! Interessanterweise können Sie es durch fast jeden Befehl pipen, um dessen Ausgabe zu durchsuchen, anstatt manuell etwas zu finden.

Grep kann verwendet werden, um die Ausgabedaten zu filtern und Ihnen Dinge zu zeigen, die für Sie relevanter sind. Experimentieren Sie damit, und Sie werden schließlich die Kunst des Diagnostizierens und Kennenlernens Ihres Computers meistern!

Alle Screenshots von Miguel Leiva-Gomez.