c# - 搜索具有共同命名约定的文件

标签 c# filenames uniqueidentifier

我有一个文件夹,里面有 38,000 多个 .pdf 文件。我不是天才将它们全部放入一个文件夹中,但我现在的任务是将它们分开。对我们有值(value)的文件都具有相同的基本命名约定,例如:

123456_20130604_NEST_IV 456789_20120209_VERT_IT

如果可能的话,我想做的是仅在文件夹中搜索具有特定命名约定的文件。例如,仅搜索包含 6 位数字、一个下划线、然后是 8 位数字、后跟另一个下划线的文件。有点像***_********。我在网上搜索过,但运气不佳。任何帮助都会很棒!

最佳答案

var regex = new Regex(@"^\d{6}_\d{8}_", RegexOptions.Compiled);

string[] files = Directory.GetFiles(folderPath)
                          .Where(path => regex.Match(Path.GetFileName(path)).Success)
                          .ToArray();

files 将包含与条件匹配的文件的路径。

对于我的示例 C:\Temp\123456_20130604_NEST_IV 456789_20120209_VERT_IT.pdf,我事先添加了它。


作为奖励,这里有 PowerShell 脚本来执行此操作(假设您位于正确的文件夹中,否则使用 gc "C:\temp" 而不是 dir) :

dir | Where-Object {$_ -match "^\d{6}_\d{8}_"}

enter image description here

关于c# - 搜索具有共同命名约定的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16924689/

相关文章:

linux - 在 Linux 上获取机器 ID 的最佳方法?

java - 是否有可能为特定的 JVM 实例获得真正唯一的 ID?

c# - Azure Functions EventGrid 触发器

c# - 如果元素在表格上的元素内部有文本,则测试失败

c# - 如何将 LINQ 结果传递给方法?

c# Lambda 查询奇怪地获取属性之一 null

bash - 在 awk 中获取多个压缩文件的 FILENAME

c# - 您如何通过添加数字来创建唯一的文件名?

c++ - 在 Eclipse for C++ 中更改可执行文件名称

java - 在 Java 中生成唯一 ID 的最佳方法