Powershell – Rechercher un motif spécifique contenu(s) dans un ou plusieurs fichiers, en filtant sur le type de fichiers que l’on veut rechercher.

Par example, on a des fichiers textes dans lesquelles on recherche la presence du mot “pomme”.

Une connaissance basique des variables Powershell et ( quelques cmdlets) est certainement un allié de poids. En effet, plutôt que d’écrire une commande complexe et vous arracher les cheveux pour des histoires syntaxiques, les variables vous permettent de décomposer chaque bloc ou élément de code, afin d’avancer à votre rythme.
Les variables sont généralement nommées, et leurs noms sont toujours précédés d’un symbole “$“

Ici, je declare 4 variables, à savoir,

SChemin -> le chemin contenant le nom du repertoire dans lequel je veux rechercher.

$Motif -> Le motif que je veux rechercher.

STypesFichiers -> Les extensions de fichiers dans lequel effectuer la recherche, je veux par example lire qu’à l’interieur des fichiers html ou textes.

$Resultats -> Un fichier qui contient les résultats de la recherche, normalement un fichier texte.

Le code :

[code language=”powershell”]

$Chemin = "C:\Users\adookhan\Desktop\text\"
$Motif = "pomme"
$TypesFichiers ="*.txt"
$PathArray = @()
$Resultats = "C:\Users\adookhan\Desktop\resultats.txt"

Get-ChildItem $Chemin -Filter $TypesFichiers -recurse | Select-String -pattern $Motif | group path | select name > $Resultats
[/code]

1.PNG

Resultats.txt
Name
—-
C:\Users\adookhan\Desktop\text\a.txt

Le test a aussi été effectué sur un repertoire contenant plusieurs centaines de dossiers et de fichiers ( taille moyenne des fichiers ~ 20 kb )  avec des motifs complexes. Sur un Serveur 2.8 GHZ, quadcore, le résultat est très satisfaisant, ..1 seconde.

Voila !

Laisser un commentaire

%d blogueurs aiment cette page :