Par défaut, la plupart des outils de recherche examinent les noms de fichiers, pas leur contenu. Cependant, le programme de recherche GNU le plus célèbre, grep, regardera à l’intérieur des fichiers avec les indicateurs corrects. Ici, nous vous montrons comment vous pouvez trouver des mots spécifiques dans un fichier sous Linux.

Utilisation de grep pour rechercher un mot spécifique dans un fichier

Par défaut, grep recherche dans le contenu des fichiers ainsi que dans leurs noms de fichiers. Il est inclus sur la majorité des systèmes Linux et est généralement identique d’une distribution à l’autre. Les programmeurs qui parcourent le contenu des fichiers de leurs projets peuvent préférer exécuter une commande différente, comme ack.

Recherche récursive Grep

Selon la manière dont le fichier est encodé, grep ne peut pas toujours regarder à l’intérieur. Mais pour la plupart des formats textuels, grep peut analyser le texte du fichier pour le modèle spécifié.

grep -rw '/path/to/search/' -e 'pattern'
  • La -r flag définit grep en mode récursif, naviguant dans tous les répertoires contenus dans le répertoire spécifié.
  • La -w flag recherche les correspondances de mots entiers. Cela signifie que « rouge » ne correspondra qu’au mot réel « rouge » plutôt qu’à toute chaîne de lettres le contenant, comme « rougeundant » ou « tirouge.” Pour ce faire, il ne recherche que le « rouge » entouré de ce que l’on appelle caractères constitutifs non verbaux (c’est-à-dire tout ce qui n’est pas une lettre, un chiffre ou un trait de soulignement).
  • La -e flag préface le motif à rechercher. Il prend en charge les expressions régulières par défaut.

Pour accélérer grep, vous pouvez utiliser le --exclude et --include flags pour limiter la recherche à certains types de fichiers. Par exemple, --exclude="*.csv" ne cherchera pas dans les fichiers avec l’extension .csv. --include="*.txt", en revanche, ne recherchera que dans les fichiers avec l’extension .txt. Le drapeau peut être ajouté immédiatement après la commande grep comme indiqué ci-dessous :

grep --exclude='*.csv' -Rw '/path/to/search' -e 'pattern'

Vous pouvez également exclure des répertoires spécifiés en suivant le format ci-dessous :

grep --exclude-dir='{dir1,dir2,*_old}' -Rw '/path/to/search' -e 'pattern'

Cette commande ne cherchera dans aucun répertoire du répertoire de travail actuel nommé dir1, dir2 ou correspondant au modèle *_old, les éliminant du processus de recherche. Il exécutera la recherche récursive de mots complets spécifiée sur tous les autres fichiers du répertoire de travail actuel.

Drapeaux intéressants que vous pouvez utiliser avec grep

Maintenant que vous connaissez bien grep et son fonctionnement, voici quelques indicateurs utiles que vous pouvez associer à votre commande :

  • -i – Demande à grep d’effectuer une recherche non sensible à la casse. Par exemple, la recherche de « Kraken » renverra un résultat lorsque grep trouvera des correspondances pour « kraken » ou « kRaken ».
  • -n – Afficher les numéros de ligne à côté des correspondances. Ceci est particulièrement utile pour les programmeurs ou les personnes qui consultent de gros fichiers de configuration.
  • -R – Comme avec -rgrep effectuera une recherche récursive dans tous les sous-dossiers, mais cet indicateur spécifique suivra les liens symboliques (raccourcis).
  • -s – Supprime les messages d’erreur. Si vous obtenez de nombreuses erreurs gênantes concernant des fichiers qui n’existent pas, ne peuvent pas être lus ou ont des autorisations inappropriées, transmettez ceci afin que grep puisse s’en tenir à vous montrer les correspondances qu’il trouve.

Utilisation de la recherche pour rechercher un mot spécifique dans un fichier

Tandis que le find la syntaxe de la commande est plus compliquée que grep, certains la préfèrent.

find . -name "*.php" -exec grep "pattern" {} ;

Cette commande utilisera find -exec flag pour transmettre les fichiers trouvés à grep pour la recherche. Avec un agencement intelligent de la syntaxe, vous pouvez utiliser findrecherche plus rapide dans le système de fichiers pour localiser les types de fichiers spécifiques dans lesquels vous souhaitez effectuer une recherche, puis dirigez-les vers grep pour chercher dans les fichiers.

Commande Grep Find

Notez que find ne regarde que les noms de fichiers, pas le contenu. C’est pourquoi grep est nécessaire pour rechercher le texte et le contenu du fichier. Les drapeaux grep normaux devraient être pleinement opérationnels depuis le -exec drapeau.

Utiliser ack pour trouver un mot spécifique dans un fichier

La commande ack est probablement l’outil de recherche le plus rapide, mais elle n’est pas aussi populaire que grep. La commande ci-dessous recherchera dans le répertoire courant.

Si vous souhaitez effectuer une recherche dans un fichier ou un répertoire spécifique, vous pouvez ajouter ce fichier ou ce chemin d’accès complet à votre recherche.

ack 'pattern' /path/to/file.txt

Vous voulez une interface graphique ? Utilisez le poisson-chat

Si vous êtes allergique aux terminaux, toutes les distributions Linux populaires proposent Catfish, une application graphique polyvalente qui vous permet de rechercher des fichiers et leur contenu pour une chaîne spécifique. Ce n’est pas aussi avancé que les commandes décrites ici, mais il fournit un service précieux aux personnes qui préféreraient une interface graphique.

Grep Catfishgui

Pour rechercher le contenu du fichier pour un mot spécifique, cliquez sur le menu dans le coin supérieur droit de Catfish et cliquez sur « Rechercher le contenu du fichier ».

Contenu du poisson-chat Grep

Après l’avoir configuré, tapez ce que vous voulez rechercher dans la barre supérieure et appuyez sur Entrer. C’est ça!

Questions fréquemment posées

Comment arrêter une recherche grep avant qu’elle ne soit terminée?

Pour arrêter tout processus en cours dans votre terminal, appuyez simplement sur Ctrl + C sur votre clavier. Cela envoie un signal pour mettre fin au processus en cours. C’est aussi pourquoi vous ne pouvez pas utiliser les raccourcis copier/coller normaux depuis un émulateur de terminal.

Existe-t-il des gestionnaires de fichiers qui recherchent le contenu des fichiers ?

Si vous utilisez l’environnement de bureau KDE Plasma, son gestionnaire de fichiers par défaut (Dolphin) a déjà cette capacité. Lorsque vous cliquez sur le bouton de recherche pour rechercher des fichiers, vous avez la possibilité de choisir entre les noms de fichiers et le contenu des fichiers sous la barre de recherche.

Cliquez simplement sur « Contenu » si vous souhaitez rechercher des mots dans les fichiers. Ce ne sera pas aussi avancé que l’utilisation de grep, mais cela fait le travail.

Existe-t-il d’autres utilisations de grep ?

Grep ne sert pas uniquement à rechercher dans votre système de fichiers ! Chose intéressante, vous pouvez le diriger à travers presque n’importe quelle commande pour rechercher dans sa sortie au lieu d’avoir à trouver manuellement quelque chose vous-même.

Grep peut être utilisé pour filtrer la sortie de la commande afin de vous montrer les éléments les plus pertinents pour vous. Expérimentez suffisamment avec lui et vous finirez par maîtriser l’art de diagnostiquer et d’apprendre à connaître votre ordinateur !

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici