$_
StemLegacy
Phase 2Maîtriser bash

#6 Chercher et filtrer

grep, find, wc, pipes

grep -- Chercher du texte

La commande grep recherche un motif (un mot, une expression) dans un ou plusieurs fichiers. Elle affiche chaque ligne qui contient le motif recherché.

Chercher un mot dans un fichier
$ grep "notes" fichier.txt
Ce fichier contient des notes importantes.

Avec l'option -r (récursif), grepcherche dans tous les fichiers du dossier courant et ses sous-dossiers :

Recherche récursive
$ grep -r "TODO" .
./projets/app.js:// TODO: ajouter validation
./notes.txt:TODO: finir le rapport

find -- Trouver des fichiers

La commande find cherche des fichiers et dossiers selon différents critères : nom, type, taille, date de modification...

Chercher par nom
$ find . -name "*.txt"
./notes.txt
./Documents/rapport.txt

L'option -type d limite la recherche aux dossiers uniquement :

Chercher les dossiers
$ find . -type d
.
./Documents
./projets

wc -- Compter

wc (word count) compte les lignes, les mots et les caractères d'un fichier :

Compter lignes, mots, caractères
$ wc notes.txt
  3  12  65 notes.txt
# 3 lignes, 12 mots, 65 caractères

L'option -l affiche uniquement le nombre de lignes :

Compter les lignes seulement
$ wc -l notes.txt
3 notes.txt

Les pipes | -- Enchaîner les commandes

Le caractère | (pipe) envoie la sortie d'une commande comme entrée de la suivante. C'est l'un des concepts les plus puissants du terminal : combiner des outils simples pour créer des traitements complexes.

Filtrer avec un pipe
$ ls | grep txt
notes.txt

Ici, ls liste les fichiers, et grep txtfiltre pour ne garder que ceux contenant "txt".

Compter avec un pipe
$ cat notes.txt | wc -l
3

La sortie de cat est envoyée à wc -l qui compte le nombre de lignes.

Récapitulatif

Résumé
grep "motif" fichier     # Chercher du texte dans un fichier
grep -r "motif" .        # Chercher récursivement
find . -name "*.txt"     # Trouver des fichiers par nom
find . -type d           # Trouver les dossiers
wc fichier               # Compter lignes, mots, caractères
wc -l fichier            # Compter les lignes
commande1 | commande2    # Pipe : enchaîner les commandes

À vous de jouer

Essayez grep, find, wc et les pipes dans le terminal ci-dessous. Combinez les commandes pour explorer les fichiers disponibles.

terminal — bash
user@stemlegacy:~$