Die grep
und ripgrep
-Befehle in Linux-Systemen sind leistungsstarke Textmodus-Suchwerkzeuge, die mehrere Optionen für die Feinabstimmung und die Verbesserung der Effizienz bieten. In diesem Handbuch wird beschrieben, wie diese beiden Befehle verwendet werden, um Dateien zu finden, die bestimmte Textzeichenfolgen im Inhalt einer Datei enthalten.
Inhaltsverzeichnis
ripgrep
grep
und ripgrep
um Text in einer Datei zu durchsuchengrep
verwenden, um alle Dateien zu finden, deren Inhalt eine bestimmte Textzeichenfolge enthält?grep
-Suche ein oder aus?grep
-Suche aus?ripgrep
und warum sollte ich es verwenden?ripgrep
durch?ripgrep
-Parameter?ripgrep
-Beispiele mit verschiedenen Optionen angeben?grep
, um Dateien zu finden, die bestimmte Textzeichenfolgen enthalten grep
(Globaler Expression Print) ist ein Befehlszeilen -Dienstprogramm, das nach Mustern in Dateien und Druckleitungen sucht. Es ist ein leistungsstarkes Textverarbeitungswerkzeug, das in unixähnlichen Betriebssystemen, einschließlich Linux, häufig verwendet wird.
grep
unterstützt regelmäßige Ausdrücke und ermöglicht es, komplexe Musteranpassungen flexibel durchzuführen. Weitere Informationen zur Verwendung von grep
-Befehlen finden Sie in der folgenden Anleitung:
grep
-Befehls -Tutorial und Beispiel (Anfänger)
Lassen Sie uns nun besprechen, wie Sie den Befehl grep
verwenden, um Dateien zu finden, die bestimmte Wörter oder Phrasen unter Linux enthalten.
Um rekursiv nach einem bestimmten Textmuster (einschließlich symbolischer Links) zu suchen und die Zeilennummern anzuzeigen, die das Muster entspricht, verwenden Sie den folgenden Befehl:
<code>grep -Rnw '/path/to/directory/' -e 'pattern'</code>
-R
: Führen Sie eine rekursive Suche durch, einschließlich symbolischer Links.-n
: Zeigen Sie die Matching -Zeilennummern an.-w
: Passen Sie nur das gesamte Wort an.-e
: Geben Sie das zu suchen Muster an. Ersetzen /path/to/directory/
mit dem von Ihnen gesuchten Verzeichnis und 'pattern'
durch das Suchmuster, nach dem Sie suchen.
Verwenden .txt
.md
Option --include
:
<code>grep --include=\*.{txt,md} -Rnw '/path/to/directory/' -e 'pattern'</code>
Verwenden .bak
.tmp
Option --exclude
:
<code>grep --exclude=\*.{bak,tmp} -Rnw '/path/to/directory/' -e 'pattern'</code>
Verwenden Sie .git
Option temp_
--exclude-dir
node_modules
<code>grep --exclude-dir={node_modules,.git,temp_*} -Rnw '/path/to/directory/' -e 'pattern'</code>
Verwenden Sie die Option -l
, um nur Dateinamen mit Mustern anzuzeigen (alphabetisch sortiert) und kombinieren Sie sich mit sort
:
<code>grep -Rlnw '/path/to/directory/' -e 'pattern' | sort</code>
Verwenden Sie die Option -v
, um Zeilen anzuzeigen, die nicht mit dem Muster übereinstimmen:
<code>grep -Rnwv '/path/to/directory/' -e 'pattern'</code>
Verwenden Sie die Option -c
, um die Anzahl der übereinstimmenden Zeilen für jede Datei anzuzeigen:
<code>grep -Rnwc '/path/to/directory/' -e 'pattern'</code>
Diese Beispiele zeigen andere erweiterte Optionen für die Feinabstimmung mit grep
unter Linux.
Einige der folgenden Befehle sollten mit sudo
oder Root -Berechtigungen ausgeführt werden.
1. Suchen Sie in allen Dateien im aktuellen Verzeichnis nach dem Zeichenfolge "Passwort":
<code>grep -Rnw '.' -e 'password'</code>
2. Suchen Sie nach "Benutzer" im /etc
-Verzeichnis unempfindlich:
<code>grep -Rinw '/etc' -e 'user'</code>
3. Suchen Sie nach dem Wort "Haupt" im Verzeichnis /home/user/projects
:
<code>grep -Rnw '/home/user/projects' -e 'main'</code>
4. Suchen Sie nach "Todo" in allen .py
-Dateien im aktuellen Verzeichnis:
<code>grep --include=\*.py -Rnw '.' -e 'TODO'</code>
5. Suchen Sie im Verzeichnis /var/logs
nach "vertraulich" und schließen Sie die .log
-Datei aus:
<code>grep --exclude=\*.log -Rnw '/var/logs' -e 'confidential'</code>
6. Suchen Sie nach "Fehler" im Verzeichnis /var/log
und zeigen Sie nur den Dateinamen an:
<code>grep -Rlnw '/var/log' -e 'error'</code>
7. Suchen Sie in der komprimierten Datei nach "Fail" (z. B. backup.zip
):
<code>zgrep -i 'fail' backup.zip</code>
8. Statistik Die Anzahl der Zeilen mit dem Wort "Fehler" im Verzeichnis /var/log
:
<code>grep -Rnwc '/var/log' -e 'error'</code>
Diese Befehle und Optionen sollten die meisten Anforderungen an die Textsuche in einer Linux -Umgebung decken.
ripgrep
ripgrep
( rg
) ist eine moderne Alternative zu grep
, die schneller und benutzerfreundlicher ist, insbesondere bei der Suche nach großen Codebasen oder großen Dateien.
Es ist in Rost geschrieben und verwendet effiziente Technologien wie begrenzte Automaten, SIMD und aggressive Textoptimierung, wodurch es viel schneller ist als viele andere Suchwerkzeuge.
ripgrep
bietet standardmäßig auch intuitiver und farbenfroher und verfügt über eine Reihe von Optionen zum Anpassen von Suchverhalten.
So suchen Sie nach der Zeichenfolge "Funktion" im aktuellen Verzeichnis:
<code>rg "search_string" .</code>
-i
: Führen Sie eine unempfindliche Suche durch.-I
: Binärdateien ignorieren.-w
: Suchen Sie nur das gesamte Wort.-n
: Zeigen Sie die Matching -Zeilennummern an.-C
oder --context
: Zeigt den Kontext um die Matching -Zeile an (z. B. -C3
zeigt 3 Zeilen vor und nach der Übereinstimmung an).--color=auto
: Highlight Matching Text.-H
: Zeigt den Dateinamen des gefundenen Textes an.-c
: Zeigt die Anzahl der passenden Zeilen an (kann mit -H
kombiniert werden). 1. Suchen Sie nach "Fehler" im /var/log/
Verzeichnis unempfindlich:
<code>rg -i "error" /var/log/</code>
2. Durchsuchen Sie das gesamte Wort "Datenbank" im Verzeichnis /home/user/config
:
<code>rg -w "database" /home/user/config</code>
3. Zeigen Sie die Zeilennummer und den umgebenden Kontext der Zeichenfolge "initialisieren" im aktuellen Verzeichnis (vor und nach 3 Zeilen) an:
<code>rg -n -C3 "initialize" .</code>
4. Suchen Sie in allen Dateien im Verzeichnis /var/www/html
nach der Zeichenfolge "veraltet", ignorieren Sie die Binärdatei und markieren Sie die Übereinstimmung:
<code>rg -I --color=auto "deprecated" /var/www/html</code>
5. Zeigen Sie die Anzahl der übereinstimmenden Zeilen des Dateinamens und "erfolgreich" im Verzeichnis /opt/data
an: "erfolgreich":
<code>rg -H -c "successful" /opt/data</code>
6. Suchen Sie nach "user_id", während Sie die Binärdatei ignorieren und den Dateinamen im Verzeichnis /etc
anmelden:
<code>rg -I -H "user_id" /etc</code>
7. Suchen Sie nach der Zeichenfolge "Verbindung" und zeigen Sie den Dateinamen und die Zeilennummer im Verzeichnis /home/user/logs
:
<code>rg -H -n "connection" /home/user/logs</code>
Diese Beispiele zeigen die Vielseitigkeit und Leistung ripgrep
in einer Vielzahl von Suchszenarien, insbesondere in großen Projekten und großen Dateien.
grep
und ripgrep
um Text in einer Datei zu durchsuchengrep
verwenden, um alle Dateien zu finden, deren Inhalt eine bestimmte Textzeichenfolge enthält?
Verwenden Sie den folgenden Befehl, um nach bestimmten Zeichenfolgen in allen Dateien in einem Verzeichnis und seinen Unterverzeichnissen zu suchen:
<code>grep -Rnw '/path/to/dir/' -e 'pattern'</code>
-R
: Führen Sie eine rekursive Suche durch, einschließlich symbolischer Links.-n
: Zeigen Sie die Matching -Zeilennummern an.-w
: Passen Sie nur das gesamte Wort an.-e
: Geben Sie das zu suchen Muster an.grep
-Suche einbeziehen oder ausschließen?
Um einen bestimmten Dateityp hinzuzufügen:
<code>grep --include=\*.{sh,py} -Rnw '/path/to/dir/' -e 'pattern'</code>
Um bestimmte Dateitypen auszuschließen:
<code>grep --exclude=\*.tmp -Rnw '/path/to/dir/' -e 'pattern'</code>
grep
-Suche ausschließen?
Bestimmte Verzeichnisse ausschließen:
<code>grep --exclude-dir={node_modules,dist,logs} -Rnw '/path/to/dir/' -e 'pattern'</code>
Verwenden Sie die Option -l
, um nur den Namen der Matching -Datei anzuzeigen:
<code>grep -Rlnw '/path/to/documents/' -e 'confidential'</code>
ripgrep
und warum sollte ich es verwenden?
ripgrep
( rg
) ist eine schnellere und effizientere Alternative zu grep
, insbesondere in großen Projekten und großen Dateien. Es basiert auf der regulären Expressions -Engine von Rust, die begrenzte Automaten, SIMD und aggressive Textoptimierung verwendet, um die Suchgeschwindigkeit zu verbessern.
ripgrep
durch?
Verwenden Sie:
<code>rg "pattern" .</code>
ripgrep
-Parameter?
-i
: Führen Sie eine unempfindliche Suche durch.-I
: Binärdateien ignorieren.-w
: Suchen Sie nur das gesamte Wort.-n
: Zeigen Sie die Matching -Zeilennummern an.-C
oder --context
: Zeigt den Kontext um die Matching -Zeile an (z. B. -C3
zeigt 3 Zeilen vor und nach der Übereinstimmung an).--color=auto
: Highlight Matching Text.-H
: Zeigt den Dateinamen des gefundenen Textes an.-c
: Zeigt die Anzahl der passenden Zeilen an (kann mit -H
kombiniert werden).ripgrep
-Beispiele mit verschiedenen Optionen angeben?
/var/logs
unsensitiv:
<code>rg -i "session" /var/logs</code>
/etc
:
<code>rg -w "config" /etc</code>
/src
(vor und nach 4 Zeilen):
<code>rg -n -C4 "initialize" /src</code>
/usr/share
nach der Zeichenfolge "veraltet", ignorieren Sie die Binärdateien und markieren Sie die Übereinstimmung:
<code>rg -I --color=auto "deprecated" /usr/share</code>
/opt/logs
an:
<code>rg -H -c "success" /opt/logs</code>
/home/user/settings
anzeigen:
<code>rg -I -H "username" /home/user/settings</code>
/projects
an:
<code>rg -H -n "import" /projects</code>
In diesem Tutorial diskutieren wir, wie grep
und ripgrep
verwendet werden, um nach Dateien zu suchen, die bestimmte Textzeichenfolgen enthalten.
Während grep
ein umfassendes und vielseitiges Tool ist, bietet ripgrep
( rg
) eine verbesserte Leistung und ein moderneres Benutzererlebnis, was es zu einer beliebten Wahl für die Textsuche macht, insbesondere bei großen Projekten oder bei der Arbeit mit großen Dateien.
Verwandte Lesungen :
Das obige ist der detaillierte Inhalt vonSo finden Sie Dateien mit spezifischem Text mit GREP und RIPGREP unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!