Vendredi 23 novembre 2018

2017-06-05-Find_Grep_Recherche

Linux chercher les fichiers contenant un mot donné

Il est parfois utile de savoir comment trouver les fichiers contenant telle ou telle information.
Pour cela il suffit d’utiliser la puissante commande de recherche grep.

grep -r -i -l 'chaine' ./

Cette commande va chercher la chaine de caractères « chaine », à remplacer par le mot que vous cherchez bien sûr.

  • -r : indique la récursivité, on va chercher dans tous les fichiers du répertoire courant indiqué par ./ si on veut rechercher dans un autre répertoire on remplace ./ par /nomdurépertoire

  • -i : insensible à la casse (minuscule/majuscule) de la chaine

  • -l : donne uniquement une liste de fichiers dans le résultat, sinon affiche en plus toute la ligne contenant la chaine recherchée.

On peut aussi écrire la commande ainsi c’est la même chose :

grep -ril "chaine" ./

Si on veut que les résultats de recherche soient mis dans un fichier on ajoute à la fin de la commande le traditionnel > /tmp/resultat.log

Mais attention à ce que ce fichier ne soit pas dans le chemin de recherche (et si on travaille sur une recherche depuis la racine sans l’option -l), on peut néanmoins l’exclure de la recherche

grep -r -i 'chaine' --exclude=resultat.log --exclude-dir=/proc --exclude-dir=/sys --exclude-dir=/dev / > /tmp/resultat.log 

find+grep ,les fichiers sont dans une arborescence

find . -type f -exec grep montexte {} \;

Explications :

  • find . => rechercher à partir du répertoire courant
  • -type f => on cherche un fichier
  • -exec => on execute une commande à chaque fichier trouvé
  • grep montexte {} => on recherche “montexte” dans les fichiers ( {} remplace le nom des fichiers trouvés).
  • \; => fin de l’option exec ( \ permet d’ajouter à la suite d’autres commandes)