Modes de paiement Abuse

Recherche de fichiers par leur contenu sous Linux : ack et ripgrep

03.05.2023, 23:33

L'utilisation de la recherche de fichiers par contenu dans Linux peut réduire considérablement le temps et les efforts consacrés à la recherche d'informations spécifiques dans des systèmes de fichiers volumineux et complexes.

Pourquoi rechercher des fichiers par leur contenu ?

Cette recherche peut s'avérer particulièrement utile lorsque vous souhaitez trouver des fichiers contenant une certaine chaîne de caractères ou un mot-clé, ou lorsque vous souhaitez trouver tous les fichiers correspondant à un certain modèle ou critère.

La recherche de fichiers par leur contenu peut être utilisée pour diverses tâches, telles que la recherche de

  • du texte spécifique dans des fichiers texte volumineux
  • des fichiers de configuration et des scripts contenant certains paramètres ou commandes
  • des fichiers contenant des données spécifiques, telles que des noms d'utilisateurs ou des numéros de téléphone
  • des fichiers par type de contenu, par exemple pour trouver tous les fichiers contenant des images JPEG ou des documents PDF.

L'objectif général de la recherche de fichiers par contenu est de faciliter l'utilisation du système de fichiers et de trouver les informations dont vous avez besoin dans le système de fichiers.

ack

Commençons par l'utilitaire ack. Il a été créé en 2005 comme alternative à grep et est rapidement devenu populaire parmi les développeurs.

Il présente plusieurs avantages par rapport à grep, notamment

  • des recherches plus intelligentes dans les fichiers et les exceptions. Par défaut, ack ne recherche que dans les fichiers qui peuvent avoir un sens, par exemple en excluant les dossiers .svn ou .git. Vous pouvez ajouter vos propres règles et exceptions ;
  • Ack recherche les fichiers et répertoires cachés par défaut ;
  • Ack n'essaie pas de chercher partout, même dans les dossiers système, comme grep. Cela signifie que vous pouvez facilement trouver des fichiers cachés sur votre système.

Exemples d'utilisation de ack :

  • Trouver tous les fichiers du dossier actuel et de ses sous-dossiers qui contiennent le mot "test" : ack "test"
  • Même chose, mais en excluant les fichiers portant l'extension .bak : ack "test" --ignore-file=match:/.bak$/
  • Trouver tous les fichiers du dossier courant contenant la chaîne "hello" et afficher les 2 premières lignes de chaque fichier : ack "hello" --heading --max-count=2

ripgrep

Le deuxième outil intéressant est ripgrep. Il est similaire à ack à bien des égards, mais utilise un algorithme de recherche plus rapide, ce qui le rend particulièrement utile pour les grands projets.

Voici quelques exemples :

  1. Trouver tous les fichiers du dossier actuel et de ses sous-dossiers qui contiennent le mot "test" : rg "test"
  2. Idem, mais en excluant les fichiers avec l'extension .bak : rg "test" --glob "!*.bak"
  3. Trouver tous les fichiers du dossier courant contenant la chaîne "hello" et afficher les 2 premières lignes de chaque fichier : rg "hello" --heading --max-columns=2

Pour finir, il convient de mentionner fzf, qui n'est pas un simple outil de recherche de chaînes de caractères comme ack et ripgrep. Fzf est utilisé comme un utilitaire pour trouver des fichiers, des dossiers et des éléments dans une liste. Il fonctionne de la même manière que ack/ripgrep, mais avec la possibilité de filtrer les résultats en direct. Voici quelques exemples :

  • Recherchez les fichiers commençant par la lettre F sur votre ordinateur : locate F | fzf -m
  • Quitter le dossier en cours et aller dans le répertoire souhaité : cd **<TAB> | fzf
  • Sélectionnez la révision SVN et copiez le numéro dans le presse-papiers : svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Nous espérons que ces outils vous aideront à trouver rapidement et efficacement les fichiers et les chaînes de caractères dont vous avez besoin. Quel que soit votre choix, ils proposent tous des recherches avancées qui peuvent accélérer considérablement votre travail.