grep LMN20113456 LMN2011*
ou si vous souhaitez effectuer une recherche récursive dans les sous-répertoires :
find . -type f -name 'LMN2011*' -exec grep LMN20113456 {} \;
Cela peut être fait sans find
également en utilisant le "--include"
de grep option.
La page de manuel de grep indique :
--include=GLOB
Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).
Ainsi, pour effectuer une recherche récursive d'une chaîne dans un fichier correspondant à un modèle spécifique, cela ressemblera à ceci :
grep -r --include=<pattern> <string> <directory>
Par exemple, pour rechercher récursivement la chaîne "mytarget" dans tous les Makefiles :
grep -r --include="Makefile" "mytarget" ./
Ou pour rechercher dans tous les fichiers commençant par "Make" dans le nom du fichier :
grep -r --include="Make*" "mytarget" ./
Grep N'UTILISE PAS de "caractères génériques" pour la recherche - c'est du shell globbing, comme *.jpg.Grep utilise des "expressions régulières" pour la correspondance des modèles. Alors que dans le shell, '*' signifie "n'importe quoi", dans grep, cela signifie "correspondre à l'élément précédent zéro ou plusieurs fois".
Plus d'informations et d'exemples ici :http://www.regular-expressions.info/reference.html
Pour répondre à votre question - vous pouvez trouver des fichiers correspondant à un modèle avec grep :
find /somedir -type f -print | grep 'LMN2011' # that will show files whose names contain LMN2011
Ensuite, vous pouvez rechercher leur contenu (insensible à la casse) :
find /somedir -type f -print | grep -i 'LMN2011' | xargs grep -i 'LMN20113456'
Si les chemins peuvent contenir des espaces, vous devez utiliser la fonctionnalité "zéro fin" :
find /somedir -type f -print0 | grep -iz 'LMN2011' | xargs -0 grep -i 'LMN20113456'