如何使用具有特定子目录的通配符扫描目录

001*_*010 6 c# directory search wildcard

我想知道什么是扫描具有您不确定的字符的目录的好方法.

例如,我想扫描

C:\程序\版本2*\文件

含义

  • 该文件夹位于 C:\Program
  • Version2.*可能是类似的东西Version2.33,Version2.1等等.
  • 该文件夹中有一个命名的文件夹Files在它

我知道我可以做类似的事情foreach (directory) if contains("Version2."),但我想知道是否有更好的方法.

Ale*_*kov 7

Directory.EnumerateDirectories接受搜索模式.所以枚举具有通配符的父级,而不是枚举其余的:

  var directories = 
    Directory.EnumerateDirectories(@"C:\Program\", "Version2.*")
     .SelectMany(parent => Directory.EnumerateDirectories(parent,"Files"))
Run Code Online (Sandbox Code Playgroud)

注意:如果路径可以在任何级别包含通配符 - 只需标准化路径并按"\"拆分,而不是逐级收集文件夹.

  • @Default EnumerateDirectories使用延迟评估,因此对于大量文件/文件夹可能更快(请查看MSDN的评论部分[link](http://msdn.microsoft.com/en-us/library/dd383572(v = vs. 100).aspx)) (2认同)