Verwenden Sie dies häufig:
grep
kann in Verbindung mit -r
(rekursiv), i
(Groß- / Kleinschreibung ignorieren) und -o
(druckt nur übereinstimmende Teile von Zeilen) verwendet werden. files
Verwendung ausschließen --exclude
und Verwendung von Verzeichnissen ausschließen --exclude-dir
.
Wenn Sie es zusammensetzen, erhalten Sie Folgendes:
grep -rio --exclude={filenames comma separated} \
--exclude-dir={directory names comma separated} <search term> <location>
Wenn man es beschreibt, klingt es weitaus komplizierter als es tatsächlich ist. Einfacher mit einem einfachen Beispiel zu veranschaulichen.
Beispiel:
Angenommen, ich suche nach dem aktuellen Projekt für alle Stellen, an denen ich den Zeichenfolgenwert debugger
während einer Debugging-Sitzung explizit festgelegt habe , und möchte nun überprüfen / entfernen.
Ich schreibe ein Skript namens findDebugger.sh
und benutze es grep
, um alle Vorkommen zu finden. Jedoch:
Für Dateiausschlüsse - Ich möchte sicherstellen, dass dies .eslintrc
ignoriert wird (dies hat tatsächlich eine Flusenregel, debugger
die ausgeschlossen werden sollte). Ebenso möchte ich nicht, dass in einem Ergebnis auf mein eigenes Skript verwiesen wird.
Für Verzeichnisausschlüsse - Ich möchte ausschließen, node_modules
da es viele Bibliotheken enthält, auf die verwiesen wird, debugger
und ich bin nicht an diesen Ergebnissen interessiert. Außerdem möchte ich nur Verzeichnisse weglassen .idea
und .git
ausblenden, weil mir diese Suchorte auch egal sind, und ich möchte die Suche performant halten.
Hier ist das Ergebnis: Ich erstelle ein Skript mit dem Namen findDebugger.sh
:
#!/usr/bin/env bash
grep -rio --exclude={.eslintrc,findDebugger.sh} \
--exclude-dir={node_modules,.idea,.git} debugger .