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'