Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

ripgrep : recherche de texte ultra-rapide en ligne de commande

8 min de lecture
Améliorer cette page

ripgrep, dont la commande est rg, recherche du texte dans une arborescence de fichiers à une vitesse que grep n'atteint pas. Écrit en Rust, récursif par défaut et conscient de .gitignore, il est devenu l'outil de référence pour fouiller du code, des logs ou de la documentation.

Ce guide s'adresse aux développeurs et administrateurs système qui cherchent une alternative moderne à grep. Vous allez installer ripgrep, lancer vos premières recherches, maîtriser les options essentielles et comprendre comment il exploite .gitignore pour ne fouiller que ce qui compte.

  • Comprendre ce qui distingue ripgrep de grep.
  • Installer ripgrep sur Linux, macOS et Windows.
  • Lancer des recherches simples et par expression régulière.
  • Utiliser les options clés : contexte, casse, filtres par type.
  • Exploiter le respect de .gitignore et l'option --no-ignore.

ripgrep est un outil de recherche de texte en ligne de commande, créé en 2016 par Andrew Gallant (BurntSushi sur GitHub). Son objectif : combiner la vitesse d'un moteur de recherche optimisé avec la compréhension des dépôts Git. Concrètement, il retrouve une chaîne ou un motif dans des milliers de fichiers en une fraction de seconde.

Deux traits le démarquent de grep. D'abord, il est récursif par défaut : pas besoin de -r. Ensuite, il respecte .gitignore : il n'explore pas les dossiers exclus comme node_modules ou .venv, ce qui accélère encore la recherche et écarte le bruit. Il gère par ailleurs des expressions régulières modernes, et propose PCRE2 en option (-P).

ripgrep est disponible dans la plupart des gestionnaires de paquets. Choisissez la méthode correspondant à votre système.

Fenêtre de terminal
sudo apt update && sudo apt install ripgrep

Pour disposer de la toute dernière version, installez le paquet officiel depuis les releases GitHub :

Fenêtre de terminal
curl -LO https://github.com/BurntSushi/ripgrep/releases/download/15.1.0/ripgrep_15.1.0-1_amd64.deb
sudo apt install ./ripgrep_15.1.0-1_amd64.deb

Vérification : la commande suivante doit afficher la version installée.

Fenêtre de terminal
rg --version
# ripgrep 15.1.0 (rev af60c2de9d)

La syntaxe de base ressemble à celle de grep, en plus simple : on donne un motif et, éventuellement, un répertoire. Sans répertoire, ripgrep cherche dans le dossier courant, de façon récursive.

Fenêtre de terminal
rg "maFonction" monProjet/

ripgrep affiche chaque correspondance avec le nom du fichier et le numéro de ligne. Le motif est en réalité une expression régulière, ce qui autorise des recherches précises. Par exemple, pour ne trouver que les lignes commençant par un chiffre :

Fenêtre de terminal
rg '^[0-9]+' monProjet/

Pour rechercher une adresse IP dans tout un projet, un motif plus élaboré suffit :

Fenêtre de terminal
rg '\b\d{1,3}(\.\d{1,3}){3}\b' monProjet/

Le moteur d'expressions régulières de ripgrep est celui de Rust. Les ancres, les classes (\d, [0-9]), les quantificateurs (+, {1,3}) et les groupes s'écrivent comme dans les autres langages : la leçon Expressions régulières en Python en détaille la syntaxe, et Expressions régulières de base sous Linux couvre le dialecte de grep -E. Une limite à connaître : ce moteur par défaut refuse les assertions de contexte ((?=...), (?<=...)) et les références arrière (\1). Pour les utiliser, ajoutez l'option -P, qui active le moteur PCRE2. Par exemple, pour n'afficher (-o) que la valeur qui suit token=, sans le préfixe :

Fenêtre de terminal
rg -P -o '(?<=token=)\w+' monProjet/

PCRE2 est une dépendance optionnelle à la compilation : les paquets usuels l'incluent, mais si -P renvoie une erreur, rg --pcre2-version indique si votre build la contient.

Quelques options transforment ripgrep en outil d'investigation. Les voici avec leur usage concret, du plus courant au plus pointu.

Afficher du contexte autour d'une correspondance, ici trois lignes avant et après, avec -C :

Fenêtre de terminal
rg -C 3 'erreur' monProjet/

Rendre la recherche insensible à la casse avec -i :

Fenêtre de terminal
rg -i 'maFonction' monProjet/

Restreindre la recherche à un type de fichier avec --type (ici Python) :

Fenêtre de terminal
rg --type py 'import' monProjet/

Exclure certains fichiers avec --glob et son préfixe ! (ici les JSON) :

Fenêtre de terminal
rg --glob '!*.json' 'recherche' monProjet/

Ne lister que les noms de fichiers correspondants, sans les extraits, avec -l :

Fenêtre de terminal
rg -l 'maFonction' monProjet/

C'est la fonctionnalité qui change tout au quotidien. Dans un dépôt git, ripgrep lit les fichiers .gitignore, .ignore et .rgignore, et écarte automatiquement les chemins qu'ils excluent. Fini de fouiller node_modules, dist ou .venv : la recherche est plus rapide et les résultats plus propres.

Fenêtre de terminal
# Dans un dépôt git, les fichiers ignorés ne sont pas parcourus
rg "token" .

Il arrive qu'on veuille tout fouiller, y compris les fichiers ignorés. L'option --no-ignore désactive ce filtrage :

Fenêtre de terminal
rg --no-ignore "token" .

grep reste universel et présent sur tout système Unix. ripgrep n'a pas vocation à le remplacer partout, mais il brille dès qu'il s'agit de fouiller un projet de code.

Critèregrepripgrep
VitesseCorrecteTrès rapide (Rust, parallélisme)
RécursivitéOption -rPar défaut
Respect de .gitignoreNonOui (dans un dépôt git)
Filtres par typeManuel--type py, --type-list
DisponibilitéPartoutÀ installer

Le bon réflexe : grep pour un one-liner rapide sur un fichier ou dans un script portable, ripgrep pour explorer une base de code.

  1. ripgrep (rg) recherche du texte très rapidement, récursivement et par défaut.
  2. Il respecte .gitignore dans un dépôt git, ce qui écarte le bruit ; --no-ignore force la recherche complète.
  3. L'installation passe par le gestionnaire de paquets, ou le .deb officiel pour la dernière version.
  4. Les options clés : -C (contexte), -i (casse), --type (type de fichier), --glob (exclusion), -l (fichiers seuls).
  5. Le motif est une regex du moteur Rust, sans assertions de contexte ni références arrière ; l'option -P active PCRE2 (si votre build l'inclut) pour ces recherches avancées.

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn