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

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

例如,我想扫描

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

含义

  • 该文件夹位于C:\Program
  • Version2.*可以是Version2.33Version2.1等。
  • 该文件夹中有一个名为Files的文件夹

我知道foreach (directory) if contains("Version2.") ,我可以做像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));