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).
Ping : Chercher et arrêter un processus sur Mac | ChristianSueur.com
Ping : La commande find - ChristianSueur.comChristianSueur.com