You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMD正则匹配文件夹路径:筛选含_dn的路径并保存至文件

解决包含"_dn"的文件夹路径捕获问题

我来帮你搞定这个需求——你遇到的问题应该是现有代码只匹配了以"_dn"结尾的文件夹,漏掉了_dn目录下还有子文件夹的路径(比如C:\docs_dn\subfolder这种)。下面是两种能覆盖所有场景的实现方案:

1. PowerShell 脚本(Windows环境首选)

直接用PowerShell递归遍历并筛选所有路径中包含_dn的文件夹,然后导出到文件:

# 替换成你的目标根目录和输出文件路径
$rootPath = "D:\Your\Target\Directory"
$outputFile = "D:\dn_folders_list.txt"

Get-ChildItem -Path $rootPath -Directory -Recurse | 
    Where-Object { $_.FullName -match "_dn" } | 
    Select-Object -ExpandProperty FullName | 
    Out-File -FilePath $outputFile -Encoding UTF8

关键细节:

  • -Directory 只找文件夹,不会混入文件路径
  • -Recurse 深入遍历所有子目录,不会漏掉嵌套的文件夹
  • $_.FullName -match "_dn" 匹配任意位置包含_dn的完整路径,不管_dn是在路径中间还是结尾,也不管后面有没有更多子文件夹
  • 用UTF8编码输出,避免中文或特殊字符乱码

2. Python 脚本(跨平台通用)

如果需要跨Windows/Linux/macOS使用,Python脚本更灵活:

import os

def collect_dn_folders(root_dir, output_path):
    with open(output_path, 'w', encoding='utf-8') as output_file:
        # 递归遍历所有文件夹
        for current_dir, _, _ in os.walk(root_dir):
            # 检查当前完整路径是否包含"_dn"
            if "_dn" in current_dir:
                output_file.write(f"{current_dir}\n")

# 示例调用,替换成你的路径
collect_dn_folders("/home/your/target/dir", "/home/your/dn_folders.txt")

说明:

  • os.walk会遍历根目录下的每一层文件夹,current_dir是当前文件夹的完整路径
  • 只要路径字符串里存在_dn,就会被写入文件,完美覆盖所有符合条件的路径

为什么之前的代码会遗漏?

大概率是之前的匹配逻辑写得太严格,只抓了以_dn结尾的路径,比如用了这类错误写法:

# 错误示例:仅匹配文件夹名以_dn结尾的情况
Where-Object { $_.Name -eq "_dn" }

或者Python里的错误判断:

# 错误示例:只匹配最后一级文件夹是_dn的路径
if os.path.basename(current_dir) == "_dn":

这种写法只会捕获像C:\data_dn这样的路径,而嵌套的C:\data_dn\sub就会被漏掉,换成我们上面的任意位置匹配就解决了。


内容的提问来源于stack exchange,提问作者Ahmad Ismail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:37:12