Recherche rapide dans un fichier linux

Il y a plusieurs jours de cela, je devais changer un bout de code dans une page web. Jusque là rien de bien difficile. Le problème était que la personne qui m’avais demandé de changer ce bout de code ne savait pas dans quel fichier précisément celui-ci se trouver…Du coup afin de découvrir le bon au milieu de plus de 600 fichiers la tâche à tout de suite été moins simple.

Du coup voici l’astuce que j’ai utilisé pour trouver rapidement et facilement une phrase dans un fichier au milieu de pleins d’autres.

Pour utiliser cette commande, vous devez être sous Linux. Dans mon exemple je recherche ‘le_terme_recherche’ et je fait ma recherche dans ‘le(s)_dossier(s)_ou_regarder’. J’aurais pu effectuer une recherche à l’endroit ou je me trouve en utilisant directement ‘.’

grep -rnw 'le(s)_dossier(s)_ou_regarder' -e 'le_terme_recherche'

L’option -r ou -R permet de lire tous les fichiers à l’intérieur de chaque répertoire, récursivement.

L’option -n ajoute à chaque ligne de sortie un préfixe contenant son numéro dans le fichier.

L’option -w permet de ne sélectionner que les lignes contenant une concordance formant un mot complet. La sous-chaîne correspondante doit donc être soit au début de la ligne, soit être précédée d’un caractère ne pouvant entrer dans la constitution d’un mot. De même elle doit se trouver soit à la fin de la ligne, soit être suivie par un caractère ne pouvant entrer dans la constitution d’un mot. Les caractères composant les mots sont les lettres, les chiffres et le souligné (« _ »).

Enfin l’option -e permet d’indiquer son « motif » recherché

Avec cette technique il est aussi possible d’exclure des dossiers ou des types de fichiers (par exemple les images). Pour les types de fichiers il suffit d’utiliser les options –include ou –exclude.

Par exemple si on ne veux rechercher que dans des fichiers txt ou .c on utilisera la commande ci-dessous.

grep --include=\*.{c,txt} -rnw 'emplacement' -e 'terme_recherche'

Idem, si l’on recherche un pattern partout sauf dans les fichiers .txt on utilisera la commande ci-dessous.

grep --exclude=*.txt -rnw 'emplacement' -e 'terme_recherche'

Pour ce qui est des dossiers on utilise l’option –exclude-dir ou include-dir que l’on utilise comme ci-dessous.

grep --exclude-dir={dossier1,dossier2} -rnw 'emplacement' -e 'terme_recherche'

 

La commande grep sous linux est une commande vraiment puissante qui permet de faire de très nombreuses choses. Je vous encourage vivement à jeter un œil à la documentation de celle-ci (grâce à la commande man grep).

 

2 réflexions sur « Recherche rapide dans un fichier linux »

  1. Ping : Chercher et arrêter un processus sur Mac | ChristianSueur.com

  2. Ping : La commande find - ChristianSueur.comChristianSueur.com

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.