Möchten Sie alle Dateien finden, die ein bestimmtes Wort oder eine bestimmte Textfolge auf Ihrem gesamten Linux-System oder einem bestimmten Verzeichnis enthalten? In diesem Artikel erfahren Sie, wie Sie das tun. Sie erfahren, wie Sie Verzeichnisse rekursiv durchsuchen, um alle Dateien zu finden und aufzulisten, die eine bestimmte Textzeichenfolge enthalten.
Eine einfache Möglichkeit, dies herauszufinden, ist die Verwendung des grep-Mustersuchwerkzeugs, einem leistungsstarken, effizienten, zuverlässigen und beliebtesten Befehlszeilendienstprogramm zum Suchen von Mustern und Wörtern in Dateien oder Verzeichnissen auf Unix-ähnlichen Systemen.
Lesen Sie auch :11 erweiterte Linux-Grep-Befehle für Zeichenklassen und Klammerausdrücke
Der folgende Befehl listet alle Dateien auf, die eine Zeile mit dem Text „check_root “ durch rekursives und aggressives Durchsuchen von ~/bin
Verzeichnis.
$ grep -Rw ~/bin/ -e 'check_root'
Wo das -R
Option sagt grep um alle Dateien unter jedem Verzeichnis rekursiv zu lesen, indem symbolischen Links nur gefolgt wird, wenn sie sich auf der Befehlszeile und der Option -w befinden weist es an, nur die Zeilen auszuwählen, die Übereinstimmungen enthalten, die ganze Wörter bilden, und -e
wird verwendet, um den zu suchenden String (Muster) anzugeben.
Sie sollten den Befehl sudo verwenden, wenn Sie nach bestimmten Verzeichnissen oder Dateien suchen, für die Root-Berechtigungen erforderlich sind (es sei denn, Sie verwalten Ihr System mit dem Root-Konto).
$ sudo grep -Rw / -e 'check_root'
Um Groß- und Kleinschreibung zu ignorieren, verwenden Sie das -i
Option wie gezeigt:
$ grep -Riw ~/bin/ -e 'check_root'
Wenn Sie die genaue Zeile wissen möchten, in der die Textzeichenfolge vorhanden ist, fügen Sie -n
hinzu Option.
$ grep -Rinw ~/bin/ -e 'check_root'
Angenommen, es gibt mehrere Arten von Dateien in einem Verzeichnis, in dem Sie suchen möchten, können Sie auch die Art der zu durchsuchenden Dateien angeben, beispielsweise durch ihre Erweiterung, indem Sie den --include
verwenden Option.
Dieses Beispiel weist grep an, nur alle .sh
zu durchsuchen Dateien.
$ grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'
Außerdem ist es möglich, mit dem folgenden Befehl nach mehr als einem Muster zu suchen.
$ grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'
Das ist es! Wenn Sie einen anderen Befehlszeilentrick kennen, um Zeichenfolgen oder Wörter in Dateien zu finden, teilen Sie uns dies mit oder stellen Sie Fragen zu diesem Thema, verwenden Sie das Kommentarformular unten.