【问题标题】:How can I get all files that fit a search pattern?如何获取符合搜索模式的所有文件?
【发布时间】:2020-03-14 06:33:27
【问题描述】:

我正在尝试获取所有符合特定模式的文件。文件名由 3 个元素组成,我将其称为 x、y 和 z(都是数字)。

  • X 通常为 5 位数。
  • Y 通常为 1 位长。
  • Z 最多可以有 2 位数字。

对于本例,x = 65986 和 y = 1。

我想获取所有符合此模式的文件:65986_1_Z.csv 其中 Z 可以是 1 到 100(不包括)之间的任何数字。

这是我目前拥有的:

FileInfo[] files = di.GetFiles(x + '_' + y + "_*.csv");

这有点奏效,因为我可以获取从 65986_1_1.csv65986_1_9.csv 的所有文件,但是一旦最终值变为 10 或更大,此搜索模式不会返回 z > 10 的那些文件。

我是误用了“*”通配符还是我在这里做错了什么?

【问题讨论】:

  • 坦率地说,这看起来像是一个框架错误。不要这样做,而是在整个文件列表上使用 Linq 来获取您想要的子集。您可以 String.Split() 使用下划线作为分隔符的文件名来获取 Z。

标签: c# regex file search directory


【解决方案1】:

如果使用RegEx 被接受,那么请考虑以下几点:

var dir = @"YourDir";
var pat = @"(\d{5}_)(\d{1}_)(\d{1,3}).csv$";
var q = from f in Directory.EnumerateFiles(dir, "*", SearchOption.AllDirectories)
        where Regex.IsMatch(f, pat)
        select f;
q.ToList().ForEach(f => Console.WriteLine(f));

您可以评估 RegEx 模式here

祝你好运。

【讨论】:

  • 最欢迎。祝你好运。
猜你喜欢
  • 2011-03-30
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
相关资源
最近更新 更多