Menu Fermer

Comment utiliser la commande Findstr pour rechercher des textes dans les fichiers

Findstr est une commande CMD de Windows qui vous permet de rechercher un motif dans les fichiers.
Avec cette commande, vous pouvez rechercher dans le contenu des fichiers ou filtrer une chaîne de caractères.
Elle supporte la recherche récursive ainsi que les expressions régulières.
C’est un équivalent de grep d’Unix et Linux mais avec des limitations.

Dans ce tutoriel, je vous montre comment utiliser la commande findstr à travers de multiples exemples.

Comment utiliser la commande Findstr pour rechercher des textes dans les fichiers

La syntaxe de la commande Findstr

Voici la syntaxe de la commande findstr de Windows :

FINDSTR <option> chaînes <lecteur:\chemin\nom de fichier>

De nombreuses options et paramètres sont disponibles dont voici une liste.

OptionsDescription
/BRecherche l’élément s’il est en début de ligne
/ERecherche l’élément s’il est en fin de ligne
/LRecherche les chaînes littéralement
/RRecherche les chaînes en tant qu’expressions
/SRecherche les fichiers correspondants dans le répertoire actif
et dans tous ses sous-répertoires
/ISpécifie que la recherche ne doit pas tenir compte de la casse
/XAffiche les lignes correspondant parfaitement
/VN’affiche que les lignes non correspondantes
/NAffiche le numéro de ligne devant chaque ligne correspondante
/MAffiche uniquement le nom des fichiers contenant des chaînes
correspondantes
/OAffiche le décalage des caractères pour chaque ligne
correspondante
/PIgnore les fichiers ne contenant pas de caractères affichables
/OFF[LINE]Ne pas ignorer les fichiers dont l’attribut hors connexion a
été réglé
/A:attrSpécifie l’attribut de couleur avec 2 chiffres hexadécimaux.
Entrez “color /?”.
/F:fichierLit la liste des fichiers dans le fichier spécifié (/ pour la
console).
/C:chaîneRecherche la chaîne spécifiée littéralement.
/G:fichierObtient les chaînes à rechercher à partir du fichier spécifié
(/ pour la console).
/D:rép Recherche dans une liste de répertoires délimitée par des
points-virgules
Les options de la commande findstr

Comment utiliser la commande Findstr avec des exemples

Recherche une chaîne de caractères dans un fichier

L’utilisation la plus basique de findstr recherche un terme dans un fichier.
Pour cela, vous n’avez pas besoin de spécifier d’option.

findstr <chaîne de caractères à chercher> <fichier>

Dans cet exemple, nous allons rechercher malekal dans le fichier demo.txt.

findstr "malekal" "C:\Users\MaK\Documents\demo.txt"
Recherche une chaîne de caractères dans un fichier avec findstr

Comme nous pouvons le voir, nous avons fourni le terme de recherche ou la chaîne de caractères entre guillemets pour éviter les erreurs et les mauvaises utilisations.

Ignorer la casse

Lors de la recherche de termes, le comportement par défaut est la sensibilité à la casse. La sensibilité à la casse signifie que toutes les chaînes de caractères fournies, qu’elles soient en majuscules ou en minuscules, sont recherchées en fonction de leur casse et qu’aucun changement de casse ne sera effectué. Nous pouvons modifier ce comportement en fonction de nos besoins et rechercher des termes en respectant la casse afin que le terme recherché corresponde à tous les cas.

Dans cet exemple, nous allons rechercher MALEKAL avec l’option /I afin d’ignorer la casse.

findstr /I "MALEKAL" demo.txt
Ignorer la casse dans la commande findstr

On voit bien que dans le premier cas, aucune occurrence n’est trouvée alors qu’avec l’option pour ignorer la casse, la commande trouve bien le texte dans le fichier.

Recherche de plusieurs chaînes de caractères

Dans l’exemple précédent, nous avons fourni un seul terme à rechercher. Dans certaines situations, nous pouvons avoir besoin de rechercher plusieurs termes. Nous pouvons fournir plusieurs chaînes de caractères à la commande findstr pour la recherche. Toutes les chaînes données seront traitées avec l’opérateur logique “OU”.

Dans cet exemple, nous allons rechercher les termes “adore malekal” .

findstr "adore malekal" users.txt
Recherche de plusieurs chaînes de caractères dans findstr

De ce fait toutes les occurrences contenant un des mots clés sont trouvées puisque findstr va rechercher chaque mot distinctement.
Pour chercher une chaîne de caractères exactes, ajoutez l’option /C de cette façon :

findstr /C:"adore malekal" users.txt
Recherche de plusieurs chaînes de caractères dans findstr

Utiliser une expression régulière (regex)

Les expressions régulières sont utilisées pour spécifier la structure de la chaîne de caractères et non les caractères entiers de la chaîne. Nous pouvons exprimer les caractères de début et de fin d’une chaîne. Ces expressions régulières peuvent être utilisées avec la commande findstr.

Dans cet exemple, nous allons rechercher une chaîne qui commence par m et se termine par l.
Nous allons activer la recherche par expression régulière grâce à l’option /R.

findstr /R "m.*l" demo.txt
MotifDescription
.Caractère joker = tout caractère
*Répétition : zéro occurrences ou plus du caractère ou de la classe
précédents
^Emplacement : début de ligne
$Emplacement : fin de ligne
[classe]Classe de caractères : tout caractère du jeu
[^class]Classe inverse : tout caractère n’appartenant pas au jeu
[x-y]Limites : tout caractère dans les limites spécifiées
\xÉchappement : utilisation littérale du métacaractère x
\Emplacement : fin du mot
Le expressions régulières dans la commande findstr

Par exemple pour utiliser une classe :

findstr /R "m[a-z0-9]*.com" "C:\Users\MaK\Documents\demo.txt"
Utiliser une expression régulière (regex) dans findstr

Recherche dans plusieurs fichiers

Jusqu’à présent, nous avons recherché des termes dans un seul fichier.
La recherche dans un seul fichier n’est pas efficace dans la plupart des situations. Findstr offre la possibilité de rechercher dans plusieurs fichiers. Afin de rechercher des fichiers multiples, nous pouvons utiliser le caractère étoile.
Si nous voulons rechercher uniquement des fichiers texte, nous pouvons également fournir une extension comme *.txt comme ci-dessous.

findstr /R "malekal" "C:\Users\MaK\Documents\d*.txt"
Recherche dans plusieurs fichiers avec la commande CMD findstr

Ici cela va rechercher dans tous les fichiers avec l’extension txt qui commence par la lettre d.

Recherche récursive dans plusieurs fichiers

Dans l’exemple précédent, nous avons cherché tous les fichiers dans le répertoire Documents.
Mais il existe une option qui nous permet de rechercher dans tous les répertoires et sous-répertoires de travail actuels. C’est ce que nous appelons la recherche récursive.

Dans cet exemple, nous allons rechercher un fichier de manière récursive dans le dossier Documents, ce qui va chercher dans tous les sous-dossiers.

Recherche récursive dans plusieurs fichiers avec findstr

Recherche en début de ligne

Nous pouvons rechercher un terme ou une chaîne de caractères à la fin des lignes.
Nous utiliserons l’option /B pour rechercher le début de la ligne. Dans cet exemple, nous allons chercher is au début de la ligne.

findstr /B "malek" *.txt

Un équivalent avec des expressions régulières donne :

findstr /R "^malek" *.txt
Recherche en début de ligne avec findstr

Recherche en fin de ligne

Une autre façon de chercher un fichier est de chercher à la fin du fichier. Nous utiliserons l’option /E pour rechercher à la fin du fichier.

findstr /E ".com" *.txt

L’équivalent avec regex :

findstr /R ".com$" *.txt
Recherche en fin de ligne avec findstr

Imprimer les numéros de ligne

Une autre fonctionnalité utile de findstr est l’impression des numéros de ligne avec les résultats.
Cela donnera un indice sur le numéro de ligne de la chaîne correspondante. Nous pouvons imprimer le numéro de ligne de la chaîne trouvée avec l’option /N comme ci-dessous.

  findstr /N "malekal" *.txt

Utiliser findstr dans le résultat d’une autre commande (redirection)

Nous avons surtout vu la recherche de fichiers mais findstr peut s’utiliser pour rechercher dans le contenu du résultat d’une commande.
Cela se fait grâce au caractère pipe exactement comme dans Linux ou Unix.

Dans cet exemple, nous chercher le motif démo dans le résultat de la commande dir.

dir|findstr /I "demo"
Utiliser findstr dans le résultat d'une autre commande