我有一个文件夹,里面有 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}_"}
关于c# - 搜索具有共同命名约定的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16924689/