GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie suche ich in bestimmten Dateien, die einem Muster entsprechen?

Wie kann ich ein Wort in bestimmten Dateien finden, das einem Muster entspricht? z.B. Suche nach version in CMake* rekursiv im aktuellen Verzeichnis gefundene Dateien.

Akzeptierte Antwort:

Wenn Sie den Dateinamen und die Zeilennummer sehen möchten, POSIXly:

find . -name 'CMake*' -type f -exec grep -nF /dev/null version {} +

(Sie möchten nicht ; verwenden Hier würde ein grep laufen pro Datei). Das ist das Standardäquivalent des GNUism:

find . -name 'CMake*' -type f -print0 | xargs -r0 grep -nHF {} +

find (im ersten), xargs (im zweiten) wird so viele Argumente an grep übergeben wie möglich, ohne die Grenze für die Anzahl der Argumente zu überschreiten, die Sie an einen Befehl übergeben können. Bei dieser Aufteilung konnte es vorkommen, dass beim letzten Durchlauf nur ein Argument an grep übergeben wurde in diesem Fall grep würde den Dateinamen nicht drucken. Deshalb brauchen Sie /dev/null dort (oder -H mit GNU grep ).

Mit -type f , betrachten wir nur normale Dateien (keine Geräte, Symlinks, Pipes, Verzeichnisse…).

Wenn Sie GNUisms verwenden möchten, können Sie GNU grep verwenden Fähigkeit, einen Verzeichnisbaum abzusteigen:

 grep -rHnF --include='CMake*' version .

Sie möchten -R nicht verwenden da dies grep verursacht symbolischen Links zu folgen, wenn man den Verzeichnisbaum absteigt und von Geräten, Fifos, Sockets … liest.

Diese Version ist sicherer und effizienter, aber nicht portabel.


Linux
  1. So verwenden Sie den Grep-Befehl, um Text in Dateien zu finden

  2. Wie finde ich Dateien auf Ubuntu?

  3. So finden Sie bestimmten Text mit GREP unter Linux

  4. Wie kann ich in einer Datei nach einem mehrzeiligen Muster suchen?

  5. Wie kann ich den Inhalt mehrerer PDF-Dateien durchsuchen?

So finden Sie eine bestimmte Zeichenfolge oder ein bestimmtes Wort in Dateien und Verzeichnissen

So schließen Sie in Grep aus

So führen Sie eine Mustersuche in Dateien mit Grep durch

So finden Sie Dateien, die eine bestimmte Textzeichenfolge in Linux enthalten

So führen Sie eine Grep-Suche für alle Dateien und in allen Verzeichnissen durch

So finden Sie Dateien in Debian