GNU/Linux >> Tutoriels Linux >  >> Linux

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

Voulez-vous trouver tous les fichiers contenant un mot ou une chaîne de texte particulière sur l'ensemble de votre système Linux ou un répertoire donné. Cet article vous guidera sur la façon de procéder, vous apprendrez à parcourir de manière récursive les répertoires pour trouver 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 parenthèses

La commande ci-dessous listera tous les fichiers contenant une ligne avec le texte "check_root ”, en recherchant récursivement et agressivement le ~/bin répertoire.

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

Où le -R l'option indique grep pour lire tous les fichiers sous 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 ordonne de sélectionner uniquement les lignes contenant des correspondances qui forment des mots entiers, et -e est utilisé pour spécifier la chaîne (motif) à 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 le -i comme indiqué :

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

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

$ 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 le --include option.

Cet exemple indique à grep de ne parcourir que tous les .sh fichiers.

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

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

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

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


Linux
  1. Comment rechercher et supprimer des répertoires et des fichiers vides sous Unix

  2. Comment rechercher et supprimer des répertoires et des fichiers vides sous Linux

  3. Comment lister récursivement tous les fichiers et répertoires

  4. Comment répertorier un type spécifique de fichiers dans des répertoires récursifs en shell ?

  5. grep récursif :exclure des répertoires spécifiques

Comment utiliser sed pour rechercher et remplacer une chaîne dans des fichiers

Comment trouver une chaîne dans un fichier sous Linux

Comment trouver des fichiers contenant une chaîne de texte spécifique sous Linux

Comment rechercher et remplacer du texte, un mot ou une chaîne dans un fichier

Trouvez facilement des fichiers et des répertoires sur Linux

Comment effectuer une recherche Grep sur tous les fichiers et dans tous les répertoires