grep LMN20113456 LMN2011*
o se vuoi cercare in modo ricorsivo attraverso le sottodirectory:
find . -type f -name 'LMN2011*' -exec grep LMN20113456 {} \;
Può essere fatto senza find
anche usando "--include"
di grep opzione.
La pagina man di grep dice:
--include=GLOB
Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).
Quindi, per eseguire una ricerca ricorsiva di una stringa in un file che corrisponde a uno schema specifico, sarà simile a questa:
grep -r --include=<pattern> <string> <directory>
Ad esempio, per cercare in modo ricorsivo la stringa "mytarget" in tutti i Makefile:
grep -r --include="Makefile" "mytarget" ./
Oppure per cercare in tutti i file che iniziano con "Make" nel nome del file:
grep -r --include="Make*" "mytarget" ./
Grep NON usa i "caratteri jolly" per la ricerca:questo è il globbing della shell, come *.jpg.Grep usa "espressioni regolari" per la corrispondenza dei modelli. Mentre nella shell '*' significa "qualsiasi cosa", in grep significa "abbina l'elemento precedente zero o più volte".
Maggiori informazioni ed esempi qui:http://www.regular-expressions.info/reference.html
Per rispondere alla tua domanda, puoi trovare i file che corrispondono a qualche pattern con grep:
find /somedir -type f -print | grep 'LMN2011' # that will show files whose names contain LMN2011
Quindi puoi cercare il loro contenuto (senza distinzione tra maiuscole e minuscole):
find /somedir -type f -print | grep -i 'LMN2011' | xargs grep -i 'LMN20113456'
Se i percorsi possono contenere spazi, dovresti usare la funzione "zero end":
find /somedir -type f -print0 | grep -iz 'LMN2011' | xargs -0 grep -i 'LMN20113456'