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

Dateinamen basierend auf einem Dateinamenmuster und Dateiinhalt auflisten?

grep LMN20113456 LMN2011*

oder wenn Sie Unterverzeichnisse rekursiv durchsuchen möchten:

find . -type f -name 'LMN2011*' -exec grep LMN20113456 {} \;

Das geht auch ohne find ebenso durch Verwendung von "--include" von grep Option.

grep Manpage sagt:

--include=GLOB
Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).

Um also eine rekursive Suche nach einem String in einer Datei durchzuführen, der einem bestimmten Muster entspricht, sieht es etwa so aus:

grep -r --include=<pattern> <string> <directory>

Zum Beispiel, um in allen Makefiles rekursiv nach dem String "mytarget" zu suchen:

grep -r --include="Makefile" "mytarget" ./

Oder um in allen Dateien zu suchen, die mit „Make“ im Dateinamen beginnen:

grep -r --include="Make*" "mytarget" ./

Grep verwendet KEINE "Wildcards" für die Suche – das ist Shell-Globing, wie *.jpg. Grep verwendet "reguläre Ausdrücke" für den Musterabgleich. Während in der Shell '*' "irgendetwas" bedeutet, bedeutet es in grep "das vorherige Element null- oder mehrmals abgleichen".

Weitere Informationen und Beispiele hier:http://www.regular-expressions.info/reference.html

Um Ihre Frage zu beantworten:Sie können mit grep Dateien finden, die einem bestimmten Muster entsprechen:

find /somedir -type f -print | grep 'LMN2011' # that will show files whose names contain LMN2011

Dann können Sie ihren Inhalt durchsuchen (Groß-/Kleinschreibung beachten):

find /somedir -type f -print | grep -i 'LMN2011' | xargs grep -i 'LMN20113456'

Wenn die Pfade Leerzeichen enthalten können, sollten Sie die "Null-Ende"-Funktion verwenden:

find /somedir -type f -print0 | grep -iz 'LMN2011' | xargs -0 grep -i 'LMN20113456'

Linux
  1. Wie suche ich nach Inhalten nach dem Muster?

  2. Wie führen Sie "weniger" aus und lassen es automatisch ein Suchmuster ausführen?

  3. Vorteile der Cat'ing-Datei und der Weiterleitung an grep

  4. AWK und Dateinamen mit Leerzeichen darin.

  5. grep Paare von Mustern und Datei

Erstellen und erweitern Sie das XFS-Dateisystem basierend auf LVM

Ls-Befehl in Linux (Dateien und Verzeichnisse auflisten)

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

Bearbeiten von Text mit sed und grep

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

Syntax von ls --hide=und ls --ignore=