Rechercher un fichier dans un répertoire en utilisant un motif complexe
-
03-07-2019 - |
Question
Je recherche une bibliothèque C # pour obtenir des fichiers ou un répertoire à partir d'un répertoire en utilisant un modèle complexe comme celui utilisé dans Ant:
-
dir1 / dir2 / ** / SVN / *
- > Correspond à tous les fichiers des répertoires SVN situés n'importe où dans l'arborescence sous dir1 / dir2 -
** / test / **
- > Correspond à tous les fichiers contenant un élément de test dans leur chemin, y compris test en tant que nom de fichier. - ...
Dois-je coder moi-même? extraire ce que je veux de NAnt? Ou cette bibliothèque existe et ma compétence google est nulle.
Directory.GetFiles (chemin de chaîne, String searchPattern)
ne gère pas le modèle de répertoire et NDepend.Helpers.FileDirectoryPath non plus (c’est une excellente bibliothèque pour la manipulation de chemins d’accès)
La solution
Le coder vous-même ne serait pas si difficile.
Utilisez simplement une expression régulière correctement formulée avec les méthodes System.IO pour générer le chemin complet
Autres conseils
Êtes-vous à l'aise avec la définition de " * " comme "tout sauf slash" et " ** " comme "quoi que ce soit"? Si tel est le cas, la conversion des expressions rationnelles semble simple.
* -> [^\/]*
** -> .*
Ensuite, il faut énumérer tous les fichiers de manière récursive et vérifier si leurs chemins correspondent à la regex.