Rechercher tous les fichiers contenant du texte spécifique
Vous savez probablement déjà comment utiliser la commande grep pour rechercher une chaîne de texte dans un fichier sous Linux. Mais que se passe-t-il si vous souhaitez récupérer une liste de fichiers contenant la chaîne de texte ? C’est une tâche qui convient le mieux à grep ou à la commande find. Nous allons vous montrer comment procéder dans ce guide.
Dans ce tutoriel, vous allez apprendre :
- Comment utiliser
les commandes grepetfindpour trouver tous les fichiers contenant du texte spécifique
Rechercher tous les fichiers contenant du texte spécifique
Rechercher un texte spécifique avec la commande grep
Sans aucun doute, grep est la meilleure commande pour rechercher un texte spécifique dans un fichier (ou des fichiers). Par défaut, il renvoie toutes les lignes d’un fichier qui contiennent une certaine chaîne. Ce comportement peut être modifié avec l’option -l, qui indique à grep de ne renvoyer que les noms de fichiers contenant le texte spécifié.
Voyons maintenant cela en action. Utilisez la syntaxe suivante dans le terminal et spécifiez tous les fichiers que vous souhaitez rechercher en ajoutant leur chemin d’accès et leur nom à la fin de la commande.
grep -l example document1.txt document2.txt
Utilisation de grep pour trouver les fichiers contenant le texte spécifié
Le résultat de grep nous montre que notre chaîne de recherche « example » n’existe que dans le fichier document1.txt. N’oubliez pas non plus que les caractères génériques sont autorisés et peuvent aider à rendre grep plus efficace :
grep -l example *.txt
Mais soyons réalistes. Si vous ne recherchez que quelques fichiers, vous n’auriez probablement pas fini par lire ce guide. Très probablement, vous avez un répertoire (ou plusieurs répertoires) rempli de fichiers que vous devez rechercher. Ce n’est pas un problème pour grep tant que vous incluez l’option -r (récursive) dans la commande.
grep -lr example /path/to/directory1/*.txt /path/to/directory2
Ou, pour rechercher dans le répertoire courant et tous les sous-répertoires, omettez le chemin d’accès à la fin de la commande.
grep -lr example
Utilisation de grep pour effectuer une recherche récursive
Envisagez également d’utiliser l’option -i, qui rend votre chaîne de recherche insensible à la casse. Pour en savoir plus sur le reste des fonctions de la commande grep, consultez notre guide d’introduction à grep. La page de manuel contient également des informations utiles :
grep man
Rechercher un texte spécifique avec la commande find
Si vous préférez utiliser la commande find, vous pouvez utiliser la syntaxe de commande suivante :
find /path/to/search -type f -exec grep -l "your-search-string" {} \;
Utilisation de la commande find pour rechercher des fichiers contenant la chaîne de texte
Encore une fois, ajoutez -i à la partie grep de la commande pour ignorer la casse. Les méthodes find et grep fonctionnent toutes les deux bien. Utilisez celui que vous préférez.
Conclusion
Dans ce guide, nous avons vu comment trouver tous les fichiers contenant du texte spécifique sous Linux. Nous avons appris deux méthodes en ligne de commande pour accomplir cette tâche, mais il en existe encore plus.



