【问题标题】:Search for files that have a common naming convention搜索具有通用命名约定的文件
【发布时间】:2013-06-04 18:11:22
【问题描述】:

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

123456_20130604_NEST_IV 456789_20120209_VERT_IT

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

【问题讨论】:

  • 试试Directory.GetFilesRegex

标签: c# filenames uniqueidentifier


【解决方案1】:
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}_"}

【讨论】:

  • 非常感谢,真的帮了我!
【解决方案2】:

? - 单个字符 * - 多个字符

所以,我会说使用 ?????? _ ?????????? _ ???? _ ??.* 获取所有文件 您可以使用命令提示符中的移动或复制命令来执行此操作。 如果要进行模式匹配等高级搜索,请使用 windows grep:http://www.wingrep.com/

【讨论】:

    【解决方案3】:

    你熟悉正则表达式吗?如果不是,它们是搜索特殊格式字符串的通用方法。我看到您使用 C# 标记了您的问题,因此假设您正在编写 C# 脚本,您可以尝试使用 .NET 正则表达式模块。

    http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx

    如果您是初学者,不妨从这里开始。

    http://www.codeproject.com/Articles/9099/The-30-Minute-Regex-Tutorial

    【讨论】:

      【解决方案4】:

      有很多方法可以处理这个问题。我喜欢做的是把工作分成不同的步骤,每一步都有清晰的输出/数据。因此,我将通过以下方式解决这个问题(因为这对我来说似乎更容易,而不是用 c# 编写一个可以完成所有事情的主程序):

      1. 打开 Windows 命令提示符(开始/运行/cmd),导航到正确 文件夹,然后是“dir *.pdf > pdf_files.txt”。这会给你一个 包含特定文件夹内所有 pdf 文件的文件。
      2. 在 Notepad++ 中打开 txt 文件 (pdf_files.txt) 然后按 "ctrl + f (find)" 激活单选按钮 "正则表达式"
      3. 输入:[0-9]{6}_[0-9]{8}_.*\.pdf 并按"Find all in current document"
      4. 复制结果并保存到新的 .txt 文件中
      5. 现在您有了一个包含所有 pdf 文件的文本文件,您可以使用这些文件做您想做的事情(创建一个解析文件并根据文件名称或其他内容移动它们的 c# 程序)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-23
        • 2012-03-13
        • 2011-08-08
        • 2012-12-24
        • 2010-09-22
        • 1970-01-01
        • 2013-10-14
        • 2012-11-19
        相关资源
        最近更新 更多