Recherche de site Web

Comment rechercher une chaîne ou un mot spécifique dans des fichiers et des répertoires


Voulez-vous rechercher tous les fichiers contenant un mot ou une chaîne de texte particulier sur l'ensemble de votre système Linux ou dans un répertoire donné. Cet article vous expliquera comment procéder, vous apprendrez à parcourir de manière récursive les répertoires pour rechercher et répertorier tous les fichiers contenant une chaîne de texte donnée.

Un moyen simple de résoudre ce problème consiste à utiliser l'outil de recherche de modèles grep, un utilitaire de ligne de commande puissant, efficace, fiable et le plus populaire pour rechercher des modèles et des mots à partir de fichiers ou de répertoires sur des systèmes de type Unix.

Lire aussi : 11 commandes Linux avancées « Grep » sur les classes de caractères et les expressions entre crochets

La commande ci-dessous listera tous les fichiers contenant une ligne avec le texte « check_root », en recherchant de manière récursive et agressive le répertoire ~/bin.

grep -Rw ~/bin/ -e 'check_root'

Où l'option -R indique à grep de lire tous les fichiers de chaque répertoire, de manière récursive, en suivant les liens symboliques uniquement s'ils se trouvent sur la ligne de commande et l'option -w< lui demande de sélectionner uniquement les lignes contenant des correspondances qui forment des mots entiers, et -e est utilisé pour spécifier la chaîne (modèle) à rechercher.

Vous devez utiliser la commande sudo lors de la recherche de certains répertoires ou fichiers nécessitant des autorisations root (sauf si vous gérez votre système avec le compte root).

 
sudo grep -Rw / -e 'check_root'	

Pour ignorer les distinctions de casse, utilisez l'option -i comme indiqué :

grep -Riw ~/bin/ -e 'check_root'

Si vous souhaitez connaître la ligne exacte où se trouve la chaîne de texte, incluez l'option -n.

grep -Rinw ~/bin/ -e 'check_root'

En supposant qu'il existe plusieurs types de fichiers dans un répertoire dans lequel vous souhaitez effectuer une recherche, vous pouvez également spécifier le type de fichiers à rechercher par exemple, par leur extension en utilisant l'option --include.

Cet exemple demande à grep de parcourir uniquement tous les fichiers .sh.

grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'

De plus, il est possible de rechercher plusieurs modèles à l'aide de la commande suivante.

grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'

C'est ça! Si vous connaissez une autre astuce en ligne de commande pour trouver une chaîne ou un mot dans des fichiers, partagez-la avec nous ou posez des questions concernant ce sujet, utilisez le formulaire de commentaires ci-dessous.