So finden Sie ein bestimmtes Wort in einer Datei unter Linux

Standardmäßig betrachten die meisten Suchwerkzeuge Dateinamen, nicht Dateiinhalte. Das bekannteste GNU-Suchprogramm, grep, sucht jedoch in Dateien mit den richtigen Flags. Hier zeigen wir Ihnen, wie Sie unter Linux bestimmte Wörter in einer Datei finden können.
Verwenden von grep, um ein bestimmtes Wort in einer Datei zu finden
Standardmäßig durchsucht grep sowohl den Inhalt von Dateien als auch deren Dateinamen. Es ist auf den meisten Linux-Systemen enthalten und in allen Distributionen im Allgemeinen identisch. Programmierer, die den Dateiinhalt ihrer Projekte durchsehen, ziehen es möglicherweise vor, einen anderen Befehl wie ack auszuführen.
Je nachdem, wie die Datei codiert ist, kann grep möglicherweise nicht immer darin nachsehen. Aber für die meisten textbasierten Formate kann grep den Text der Datei nach dem angegebenen Muster durchsuchen.
grep -rw '/Pfad/zu/Suche/' -e 'Muster'
- Das Flag -r setzt grep in den rekursiven Modus und navigiert durch alle Verzeichnisse innerhalb des angegebenen Verzeichnisses.
- Das Flag -w sucht nach Ganzwortübereinstimmungen. Das bedeutet, dass „rot“ nur mit dem eigentlichen Wort „rot“ übereinstimmt und nicht mit einer Buchstabenfolge, die es enthält, wie „redundant“ oder „müde“. Dies geschieht, indem nur nach „rot“ gesucht wird, das von sogenannten Nicht-Wortbestandteilen umgeben ist (dh alles, was kein Buchstabe, keine Zahl oder kein Unterstrich ist).
- Das Flag -e steht vor dem Muster, 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. Beispielsweise sucht --exclude="*.csv" nicht in Dateien mit der Erweiterung .csv. --include="*.txt" hingegen sucht nur in Dateien mit der Erweiterung .txt. Das Flag kann wie unten gezeigt direkt nach dem grep-Befehl hinzugefügt werden:
grep --exclude='*.csv' -Rw '/path/to/search' -e 'pattern'Sie können auch bestimmte Verzeichnisse ausschließen, indem Sie dem folgenden Format folgen:
grep --exclude-dir='{dir1,dir2,*_old}' -Rw '/Pfad/zu/Suche' -e 'Muster'Dieser Befehl durchsucht keine Verzeichnisse im aktuellen Arbeitsverzeichnis namens dir1, dir2 oder die mit dem Muster *_old übereinstimmen, wodurch sie aus dem Suchprozess ausgeschlossen werden. Es führt die angegebene rekursive Vollwort-Übereinstimmungssuche für alle anderen Dateien im aktuellen Arbeitsverzeichnis aus.
Interessante Flags, die Sie mit grep verwenden können
Nachdem Sie sich nun mit grep und seiner Funktionsweise vertraut gemacht haben, sind hier einige nützliche Flags, die Sie an Ihren Befehl anhängen können:
- -i – Lässt grep eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchführen. Beispielsweise wird die Suche nach „Kraken“ ein Ergebnis zurückgeben, wenn grep Übereinstimmungen für „kraken“ oder „kRaken“ findet.
- -n – Zeilennummern neben Übereinstimmungen anzeigen. Dies ist besonders nützlich für Programmierer oder Leute, die große Konfigurationsdateien durchsuchen.
- -R – Wie bei -r führt grep eine rekursive Suche durch alle Unterordner durch, aber dieses spezifische Flag folgt symbolischen Links (Shortcuts).
- -S – Unterdrückt Fehlermeldungen. Wenn Sie viele ablenkende Fehler zu Dateien erhalten, die nicht existieren, nicht gelesen werden können oder unangemessene Berechtigungen haben, übergeben Sie dies, damit grep sich daran halten kann, Ihnen Übereinstimmungen anzuzeigen, die es findet.
Verwenden von find, um ein bestimmtes Wort in einer Datei zu finden
Obwohl die Syntax des Find-Befehls komplizierter ist als die von grep, wird sie von einigen bevorzugt.
finden . -name "*.php" -exec grep "Muster" {} ;Dieser Befehl verwendet das Flag -exec von find, um die gefundenen Dateien zur Suche an grep zu übergeben. 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 nach Dateinamen sucht, nicht nach Inhalten. Aus diesem Grund ist grep erforderlich, um Dateitext und -inhalt zu durchsuchen. Die normalen grep-Flags sollten innerhalb des Flags -exec voll funktionsfähig sein.
Verwenden von ack, um ein bestimmtes Wort in einer Datei zu finden
Der ack-Befehl ist wahrscheinlich das schnellste Suchwerkzeug, aber er ist nicht so beliebt wie grep. Der folgende Befehl sucht im aktuellen Verzeichnis.
Wenn Sie in einer bestimmten Datei oder einem bestimmten Verzeichnis suchen möchten, können Sie diese Datei oder den vollständig qualifizierten Pfadnamen an Ihre Suche anhängen.
ack 'Muster' /path/to/file.txtWillst du eine GUI? Verwenden Sie Wels
Wenn Sie allergisch gegen Terminals sind, bieten alle gängigen Linux-Distributionen Catfish an, eine vielseitige GUI-Anwendung, mit der Sie Dateien und deren Inhalt nach einer bestimmten Zeichenfolge durchsuchen können. Es ist nicht so fortschrittlich wie die hier besprochenen Befehle, aber es bietet einen wertvollen Dienst für Leute, die eine grafische Oberfläche bevorzugen.
Um Dateiinhalte nach einem bestimmten Wort zu durchsuchen, klicken Sie auf das Menü in der oberen rechten Ecke von Catfish und dann auf „Dateiinhalte durchsuchen“.
Nachdem Sie es eingerichtet haben, geben Sie in der oberen Leiste ein, wonach Sie suchen möchten, und drücken Sie die Eingabetaste. Das ist es!
Häufig gestellte Fragen
Wie stoppe ich eine grep-Suche, bevor sie fertig ist?
Um einen laufenden Prozess in Ihrem Terminal zu stoppen, drücken Sie einfach Strg + C auf Ihrer Tastatur. Dies sendet ein Signal zum Beenden des laufenden Prozesses. Aus diesem Grund können Sie auch keine normalen Verknüpfungen zum Kopieren / Einfügen in einem Terminalemulator verwenden.
Gibt es Dateimanager, die Dateiinhalte durchsuchen?
Wenn Sie die KDE-Plasma-Desktop-Umgebung verwenden, verfügt der Standard-Dateimanager (Dolphin) bereits über diese Funktion. Wenn Sie auf die Suchschaltfläche klicken, um nach Dateien zu suchen, können Sie unter der Suchleiste zwischen Dateinamen und Dateiinhalt wählen.
Klicken Sie einfach auf „Inhalt“, wenn Sie nach Wörtern in Dateien suchen möchten. Es wird nicht so fortgeschritten sein wie die Verwendung von grep, aber es macht den Job.
Gibt es andere Verwendungen für grep?
Grep dient nicht nur zum Durchsuchen Ihres Dateisystems! Interessanterweise können Sie es durch fast jeden Befehl leiten, um seine Ausgabe zu durchsuchen, anstatt selbst etwas manuell finden zu müssen.
Grep kann verwendet werden, um die Befehlsausgabe zu filtern, um Ihnen Dinge anzuzeigen, die für Sie relevanter sind. Experimentieren Sie genug damit und Sie werden schließlich die Kunst der Diagnose und des Kennenlernens Ihres Computers beherrschen!

Schreibe einen Kommentar