【问题标题】:Find and delete matching folders based on partial name pattern根据部分名称模式查找和删除匹配的文件夹
【发布时间】:2015-07-17 18:39:51
【问题描述】:

我有样本文件夹 A。我有完成的文件夹 B。当我在文件夹 B 中有完整版本时,我想从示例目录中删除示例。

文件夹将通过一个通用字符串进行匹配:BAX 后跟一个数字序列(即 BAX52858)。通常完整的文件名会更长,因此它只会是部分文件夹名与该 BAX##### 字符串共同匹配。

非常感谢~

【问题讨论】:

    标签: regex pattern-matching filenames


    【解决方案1】:

    在这种情况下,我认为 RegEx 并不是真正适合这项工作的工具,但是,如果您确定或需要为此使用它,这里是方法。从文件夹 B 中获取完整文件的列表,如下所示:

    BAX12345
    BAX12346
    BAX12347

    并将其转换为这样的管道分隔列表:

    BAX12345|BAX12346|BAX12347

    如果您想使用 RegEx 执行该转换,您可以执行此 RegEx 替换:

    • 模式:\n
    • 替换:|

    接下来,获取示例文件列表,如下所示:

    BAX12344
    BAX12345
    BAX12346
    BAX12347
    BAX12348

    然后在此示例文件列表上的 RegEx 替换中使用之前的管道分隔字符串作为您的模式:

    • 模式:BAX12345|BAX12346|BAX12347
    • 替换:(空字符串)

    这将导致:

    BAX12344


    BAX12348

    现在您可以删除该结果列表中的所有文件。如果要删除空行,只需在模式中的每个管道之前添加 \n 即可。

    【讨论】:

    • 非常感谢您的帮助。我没有决心使用正则表达式,你有什么建议?
    • @MariaBaron 任何允许您访问文件夹中文件列表的编程语言都可以。工作的最佳语言很大程度上取决于您将使用它的平台以及您最熟悉的语言。