Comment rechercher des fichiers de manière récursive dans PowerShell ?
Essayez-vous de rechercher des fichiers dans un répertoire et des sous-répertoires ? PowerShell a facilité la tâche. Dans ce tutoriel, je vais vous expliquer comment rechercher des fichiers de manière récursive dans PowerShell.
Pour rechercher des fichiers de manière récursive dans PowerShell, utilisez l'applet de commande Get-ChildItem avec le paramètre -Recurse. Par exemple, pour rechercher tous les fichiers .txt d'un dossier et de ses sous-dossiers, utilisez Get-ChildItem -Path « C:\YourFolder » -Recurse -Filter *.txt. Cette commande listera tous les fichiers .txt dans le répertoire spécifié, en parcourant tous les niveaux de sous-répertoires.
Rechercher des fichiers de manière récursive dans PowerShell
Maintenant, laissez-moi vous montrer comment rechercher des fichiers de manière récursive dans PowerShell en utilisant différentes méthodes.
Méthode 1 : utilisation de Get-ChildItem
L'applet de commande Get-ChildItem est la commande incontournable pour répertorier les éléments dans un ou plusieurs emplacements spécifiés. Lorsqu'il est combiné avec le paramètre -Recurse, il peut effectuer une recherche dans les répertoires et leurs sous-répertoires. Voici un exemple de base de la façon d'utiliser Get-ChildItem pour rechercher récursivement tous les fichiers avec une extension .txt :
Get-ChildItem -Path C:\MyFolder -Recurse -Filter *.txt
Cette commande listera tous les fichiers texte dans « MyFolder » et tous ses sous-dossiers. Toutefois, si vous souhaitez ajouter des conditions supplémentaires, telles que la recherche de fichiers modifiés au cours des 7 derniers jours, vous pouvez rediriger les résultats vers l'applet de commande Where-Object :
Get-ChildItem -Path C:\MyFolder -Recurse -Filter *.txt | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) }Méthode 2 : Utilisation des paramètres -Include et -Exclude
Pour affiner votre recherche, Get-ChildItem prend également en charge les paramètres -Include et -Exclude. Ces paramètres vous permettent de spécifier des modèles à inclure ou à exclure des résultats de recherche. Par exemple, pour rechercher tous les fichiers .log en excluant ceux qui contiennent « archive » dans le nom de fichier, vous pouvez utiliser :
Get-ChildItem -Path C:\Logs -Recurse -Include *.log -Exclude *archive*Cette commande recherchera récursivement les fichiers journaux dans le répertoire « Logs », en omettant ceux avec « archive » dans leur nom.
Méthode 3 : combiner avec Select-String pour les recherches de contenu
Parfois, vous devez rechercher des fichiers contenant un texte spécifique. C'est là que Select-String entre en jeu, vous permettant de faire correspondre les chaînes dans le contenu du fichier. Voici un exemple de script qui recherche les fichiers contenant le mot « erreur » :
Get-ChildItem -Path C:\Logs -Recurse -File | Select-String -Pattern "error" | Select-Object -Unique PathCe script répertorie les fichiers dans « Journaux » de manière récursive, analyse chaque fichier à la recherche du mot « erreur », puis affiche chaque chemin de fichier une seule fois, quel que soit le nombre de correspondances.
Méthode 4 : Filtrage avancé avec des blocs de script
Pour des recherches plus complexes, vous pouvez utiliser des blocs de script pour créer des filtres avancés. Cette approche offre un niveau élevé de contrôle sur les critères de recherche. Vous trouverez ci-dessous un script qui recherche tous les fichiers de plus de 1 Mo dans PowerShell :
Get-ChildItem -Path C:\Data -Recurse | Where-Object { $_.Length -gt 1MB }Cette commande renverra les fichiers de « Données » dont la taille dépasse 1 Mo.
Méthode 5 : utilisation de l’applet de commande Resolve-Path pour l’expansion des modèles
Si vous avez affaire à des modèles de chemin complexes, Resolve-Path peut vous aider à les développer avant d'effectuer une recherche. Voici comment vous pouvez l'utiliser avec Get-ChildItem :
Resolve-Path "C:\Projects\*\*.config" | ForEach-Object { Get-ChildItem -Path $_.Path -Recurse }Ce script étend le modèle de caractère générique pour rechercher tous les fichiers .config dans n'importe quel sous-répertoire de « Projets ».
Méthode 6 : créer des fonctions personnalisées pour la réutilisabilité
Si vous souhaitez le réutiliser, vous pouvez créer une fonction personnalisée dans PowerShell. Vous trouverez ci-dessous une fonction de base qui encapsule la logique de recherche pour la réutilisation :
function Find-FilesRecursively {
param(
[string]$Path,
[string]$Pattern
)
Get-ChildItem -Path $Path -Recurse -Filter $Pattern
}
# Usage
Find-FilesRecursively -Path C:\Documents -Pattern *.pdf
Cette fonction peut être ajoutée à votre profil PowerShell pour un accès rapide et peut être appelée avec différents chemins et modèles selon les besoins.
Conclusion
J'espère que vous avez maintenant appris à rechercher des fichiers de manière récursive dans PowerShell en utilisant diverses méthodes.
