Rechercher un texte dans plusieurs fichiers |
1. si tous les fichiers sont dans le même répertoire
# grep "mon_texte" *
On va alors obtenir la liste des fichiers qui contiennent le texte, suivie de la ligne du fichier contenant le texte.
Pour voir le numéro de la ligne concernée on mettra grep -n.
Pour ne voir que le nom des fichiers on mettre grep -l.
2. si les fichiers sont dans des répertoires différents
# find . -type f -exec grep -l "mon_texte" {} \;
explication :
- find . => rechercher à partir du répertoire courant
- -type f => on cherche un fichier
- -exec => à chaque fichier trouvé on exécute la commande qui suit
- grep -l "mon_texte" {} => on recherche "mon_texte" dans les fichiers ({} remplace le nom des fichiers trouvés) et on affiche le nom du fichier
- \; => fin de l'option exec
remarques : cette procédure n'affiche que le nom des fichiers, mais pas la ligne de texte correspondante. Si on veut voir la ligne de texte, il faut retirer l'iption "-l", mais dans ce cas on ne voit plus le nom du fichier... On peut encore remplacer "-l" par "-n", dans ce cas on voit la ligne de texte avec le numéro de ligne, mais là encore, on ne voit plus le nom du fichier. Je n'ai pas trouvé de moyen simple (sans passer par un script) d'afficher à la fois le nom du fichier et la ligne de texte. Si quelqu'un sait faire, ça m'intéresse .
|