我想知道扫描一个你不确定的字符的目录会有什么好办法。
例如,我想扫描
C:\程序\版本2 * \文件
。
含义
C:\Program
Version2.*
可以是Version2.33
,Version2.1
等等。Files
的文件夹我知道我可以做foreach (directory) if contains("Version2.")
之类的事情,但我想知道是否有更好的方法。
答案 0 :(得分:7)
Directory.EnumerateDirectories 接受搜索模式。所以枚举具有通配符的父级,而不是枚举其余的:
var directories =
Directory.EnumerateDirectories(@"C:\Program\", "Version2.*")
.SelectMany(parent => Directory.EnumerateDirectories(parent,"Files"))
注意:如果路径可以包含任何级别的通配符 - 只需将路径标准化并按“\”拆分,而不是逐级收集文件夹。
答案 1 :(得分:1)
试试这个
var pattern = new Regex(@"C:\\Program\\Version 2(.*)\\Files(.*)");
var directories = Directory.EnumerateDirectories(@"C:\Program", "*",
SearchOption.AllDirectories)
.Where(d => pattern.IsMatch(d));