Rechercher un mot dans plusieurs fichiers ou dossiers sous linux
I. Présentation
Il vous est surement déjà arrivé d'utiliser la commande grep pour rechercher une chaine de caractère dans un fichier. Dans ce tutoriel, nous allons voir comment rechercher un mot avec la commande grep quand la recherche porte sur plusieurs fichiers ou dossiers.
II. La commande grep récursive
La commande reste sensiblement la même, il faut juste y ajouter l'option "-r" qui indique la récursivité de la recherche. Par exemple si nous voulons rechercher tous les fichiers contenants le mot "connect" :
grep -r connect ./
La commande grep est donc exécutée avec l'option "-r" (récursivité), le mot à rechercher puis le ou les dossiers/fichiers à analyser. "./" signifie que la recherche s'effectuera sur tout le répertoire actuel ainsi que sur les sous répertoires.
III. Quelques options supplémentaires
Pour étendre légèrement votre recherche, vous pouvez utiliser l'option "-i" au lancement de votre commande pour la rendre insensible à la casse (la différence entre majuscules et minuscules).
grep -r -i connect ./
Cela donnera le résultat suivant:
Pour cette commande, toutes les lignes des fichiers renvoyant "connect", "Connect", "CONNECT", etc ... seront dans le résultat de la recherche. Vous pouvez simplifier le résultat de votre recherche en y ajoutant l'option "-l". Ainsi, seul les noms des fichiers apparaitront. Sans cette option, vous aurez le nom du fichier ainsi que la ligne contenant le mot recherché, ce qui peut rendre le résultat de la recherche peut lisible si il y a beaucoup de résultats.
grep -r -i - l connect ./
Cela donnera le résultat suivant :
grep contient beaucoup d'options d'exécution, ce qui en fait un outil très puissant.
Je partage ce tutoriel pour faciliter le travail de recherche en 2020.
Effectuer une recherche avec find, locate, grep.
Bonne lecture : https://wiki.visionduweb.fr/index.php?title=Utiliser_des_commandes_shell_avec_le_terminal#Effectuer_une_recherche