Recherche de structures de texte dans des fichiers à l'aide d'expressions régulières.
Findstr est capable de trouver le texte exact recherché dans n'importe quel(s) fichier(s) ASCII. Il arrive cependant que vous ne disposiez que d'une partie de l'information recherchée ou que vous vouliez trouver une plus grande plage d'informations. Dans ces cas, findstr dispose d'une fonctionnalité puissante lui permettant de chercher des modèles de texte au moyen d'expressions régulières.
On appelle expression régulière la notation utilisée pour définir des modèles de texte, par opposition aux chaînes exactes de caractères. La notation utilise des caractères littéraux et des méta-caractères. Chaque caractère qui n'a pas de signification particulière dans la syntaxe de l'expression régulière est un caractère littéral qui correspond à une occurrence quelconque de ce caractère. Les lettres et les nombres sont ainsi des caractères littéraux. Un méta-caractère est un symbole doté d'un sens particulier (opérateur ou séparateur) dans la syntaxe de l'expression régulière.
Le tableau suivant répertorie les métacaractères acceptés par findstr.
Caractère | Valeur |
---|---|
. | Caractère générique : n'importe quel caractère |
* | Répétition : zéro occurrence ou plus du caractère précédent ou de la classe |
^ | Position sur la ligne : début de la ligne |
$ | Position sur la ligne : fin de la ligne |
[classe] | Classe de caractère : n'importe quel caractère du jeu |
[^classe] | Classe inverse : n'importe quel caractère ne figurant pas dans le jeu |
[x-y] | Plage : n'importe quels caractères de la plage spécifiée |
\x | Échappement : utilisation littérale du méta-caractère x |
\<xyz | Position dans le mot : début du mot |
xyz\> | Position dans le mot : fin du mot |
Les caractères spéciaux de la syntaxe de l'expression régulière sont le plus performants lorsque vous les utilisez ensemble. Par exemple, la combinaison suivante du caractère générique (.) et du caractère de répétition (*) correspondent à n'importe quelle chaîne de caractères :
.*
Utilisez l'expression suivante en tant que partie d'une expression plus grande qui correspond à une chaîne qui commence par « b » et se termine par « ing » :
b.*ent
Utilisez des espaces pour séparer plusieurs chaînes de rechercher sauf si l'argument est précédé de /c. Pour rechercher « bonne » ou « nuit » dans le fichier x.y, tapez :
findstr "bonne nuit" x.y
Pour rechercher « bonne nuit » dans le fichier x.y, tapez :
findstr /c:"bonne nuit" x.y'
Pour trouver toutes les occurrences du mot Windows (avec la majuscule W) dans le fichier Devis.txt, tapez :
findstr Windows devis.txt
Pour chercher le mot Windows, sans distinguer la casse, dans tous les fichiers du répertoire en cours et de tous les sous-répertoires, tapez :
findstr /s /i Windows *.*
Pour trouver toutes les occurrences des lignes contenant le mot STOP, précédé par un nombre quelconque d'espaces (comme dans une boucle de programme informatique, par exemple) et pour inclure le numéro de ligne où se trouve chaque occurrence trouvée, tapez :
findstr /b /n /c:" *STOP" *.bas
Si vous souhaitez chercher différents éléments dans le même jeu de fichiers, créez un fichier texte contenant chaque critère de recherche sur une nouvelle ligne. Vous pouvez également indiquer les fichiers exacts que vous souhaitez rechercher dans un fichier texte. Pour utiliser les critères de recherche dans le fichier Trouver.txt, rechercher les fichiers indiqués dans ListeFich.txt, puis stocker les résultats dans le fichier Result.fin, tapez :
findstr /g:finddata.txt /f:filelist.txt > results.out
Supposons que vous souhaitiez trouver tous les fichiers du répertoire en cours et tous les sous-répertoires contenant le mot ordinateur, sans distinction de la casse. Pour obtenir la liste de tous les fichiers contenant le mot ordinateur, tapez :
findstr /s /i /m "\<ordinateur\>" *.*
Supposons maintenant que vous souhaitiez trouver non seulement le mot “ ordinateur ”, mais également n'importe quel mot commençant par les lettres ordi, tels que “ ordinal ” et “ ordinaire ”. ; comme suit :
findstr /s /i /m "\<ordi.*" *.*
XOXConverted from CHM to HTML with chm2web Standard 2.75 (unicode) |