Pesquisar arquivo no diretório usando padrão complexo
-
03-07-2019 - |
Pergunta
Eu estou procurando uma biblioteca C # para obter arquivos ou diretórios de um diretório usando um padrão complexo como o usado no Ant:
-
dir1/dir2/**/SVN/*
-> Jogos todos os arquivos em diretórios SVN que estão localizados em qualquer lugar na árvore de diretórios sob dir1 / dir2 -
**/test/**
-.> Jogos todos os arquivos que têm um elemento de teste em seu caminho, incluindo o teste como um nome de arquivo - ...
Eu preciso de código-lo eu mesmo? extrair o que eu quero de NAnt? Ou existe esta biblioteca e meu google habilidade é uma porcaria.
Directory.GetFiles(String path, String searchPattern)
não lidar com padrão de diretório e NDepend.Helpers.FileDirectoryPath não (é uma grande biblioteca para a manipulação caminho pela maneira)
Solução
Codificação-lo sozinho não seria tão difícil.
Basta usar uma expressão regular corretamente formulado com métodos System.IO para construir o caminho completo
Outras dicas
Você está satisfeito com a definição de "*" como "qualquer coisa, mas barra" e "**" como "nada"? Se assim for, a conversão regex parece simples.
* -> [^\/]*
** -> .*
Então é uma questão de enumerar recursivamente todos os arquivos, e verificar se seus caminhos corresponder ao regex.