GNU/Linux >> Tutoriels Linux >  >> Linux

Répertorier les noms de fichiers en fonction d'un modèle de nom de fichier et du contenu du fichier ?

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'

Linux
  1. Comment copier les autorisations et la propriété des fichiers dans un autre fichier sous Linux

  2. Imprimer des lignes entre (et y compris) deux motifs ?

  3. Sortie vers Stdout et en même temps Grep dans un fichier ?

  4. grep une grande liste contre un gros fichier

  5. AWK et les noms de fichiers contenant de l'espace.

Créer et étendre un système de fichiers XFS basé sur LVM

Commande Ls sous Linux (liste des fichiers et des répertoires)

Comment effectuer une recherche de modèle dans les fichiers à l'aide de Grep

Manipuler du texte avec sed et grep

Comment effectuer une recherche Grep sur tous les fichiers et dans tous les répertoires

grep paires de motifs et fichier