Comment utiliser grep de manière récursive dans certaines extensions de fichiers

0
32

grep est un excellent outil pour rechercher dans les fichiers et les entrées standard sous Linux et est capable de faire correspondre les chaînes et les expressions régulières motifs. Cependant, il est parfois nécessaire de contrôler les types de fichiers recherchés par grep, et des indicateurs sont intégrés à cette fin.

Seulement Inclure certains fichiers dans les recherches grep

Par défaut, grep recherche tous les fichiers d'un dossier donné et de ses sous-dossiers si vous l'invoquez avec l'indicateur récursif -r. Cela ramassera tout, mais si vous ne voulez que certaines extensions, l'option que vous voudrez utiliser est –include.

L'indicateur –include indique à grep de n'inclure que les fichiers correspondant à un certain modèle. S'il est spécifié, grep traitera tous les indicateurs d'inclusion comme une liste blanche. Vous pouvez l'utiliser avec n'importe quel caractère glob Linux, comme les caractères génériques pour correspondre à tout, y compris une certaine extension :

grep -inr –include *.txt “foo” ~/folder

Notez que ceci est échappé avec une barre oblique  car il est possible que les noms de fichiers contiennent des astérisques. Vous pouvez également spécifier plusieurs indicateurs –include, par exemple en recherchant tous les fichiers source HTML, JS et CSS dans un wwwroot :

grep -inr –include *.html –include *.css –include *.js “foo” ~/folder

Vous pouvez également exclure certains noms de fichiers, qui correspondront toujours à tout sauf pour le glob, agissant comme une liste noire en plus de la configuration existante :

grep -inr –exclude *.txt “foo” ~/folder

Il existe également un indicateur pour exclure des répertoires entiers à la fois :

grep -inr –exclude-dir config “foo” ~/folder

Utiliser la recherche à la place

Sinon, si vous préférez utiliser l'utilitaire de recherche pour rechercher dans les fichiers, vous pouvez le connecter à grep à l'aide de canaux et de xargs. find peut effectuer des recherches avec des modèles et Regex, et présente un certain nombre d'avantages, notamment la possibilité de filtrer facilement les fichiers en fonction de métadonnées telles que la taille, la date de création et de modification, et d'autres identifiants Linux.

La commande est un peu obtus, car vous devrez utiliser -print0 à la fin de find pour imprimer une liste d'une seule ligne, puis la transmettre à xargs -0 et grep à partir de là.

 find ./-type f -iname “*.txt” -print0 | xargs -0 grep “foo” LIRE SUIVANT

  • › Quels accessoires pour smartphone valent la peine d'être achetés ?
  • › N'achetez pas de répéteur Wi-Fi : achetez plutôt celui-ci
  • › Nouveautés de Chrome 104, disponible dès maintenant
  • › Devriez-vous augmenter la puissance de transmission de votre routeur Wi-Fi ?
  • › Test de l'Edifier Neobuds S : le bon, le mauvais et le buggy
  • › Premier PC de Radio Shack : 45 ans de TRS-80