我想知道什么是扫描包含您不确定的字符的目录的好方法。
比如我想扫描
C:\Program\Version2.*\Files
意义
- 该文件夹位于
C:\Program
Version2.*
可以是Version2.33
,Version2.1
等- 该文件夹中有一个名为的文件
Files
夹
我知道我可以做类似的事情foreach (directory) if contains("Version2.")
,但我想知道是否有更好的方法。
Directory.EnumerateDirectories接受搜索模式。因此,枚举具有通配符的父级,而不是枚举其余的:
var directories =
Directory.EnumerateDirectories(@"C:\Program\", "Version2.*")
.SelectMany(parent => Directory.EnumerateDirectories(parent,"Files"))
注意:如果路径可以包含任何级别的通配符 - 只需规范化路径并用“\”分割,而不是逐级收集文件夹。
试试这个
var pattern = new Regex(@"C:\\Program\\Version 2(.*)\\Files(.*)");
var directories = Directory.EnumerateDirectories(@"C:\Program", "*",
SearchOption.AllDirectories)
.Where(d => pattern.IsMatch(d));