如何使用CMD正则表达式在递归目录搜索中筛选目标文件夹
解决方案
核心思路
要精准匹配目标文件夹并排除子文件夹,关键要确保匹配的是路径的最后一个文件夹,同时该文件夹名包含d_d或dd_dd模式(且模式不在文件夹名开头)。
最终findstr命令
findstr /r /c:"^.*/[^/0-9].*\([0-9]_[0-9]\|[0-9][0-9]_[0-9][0-9]\)[^/]*/*$"
正则规则拆解
^.*/:匹配路径开头到最后一个斜杠之前的部分,定位到最后一个文件夹[^/0-9]:匹配非数字、非斜杠的字符,确保目标模式不在文件夹名开头.*:匹配模式前后的任意字符,允许模式在文件夹名中间或末尾\([0-9]_[0-9]\|[0-9][0-9]_[0-9][0-9]\):匹配d_d或dd_dd的核心模式,两种情况用|分隔[^/]*:匹配模式之后的任意非斜杠字符,覆盖文件夹名剩余部分/*$:匹配结尾的0个或多个斜杠,兼容路径带/或不带/的情况
验证与使用
用你提供的示例输入测试,该命令会精准保留所有+++标记的目标路径,排除---标记的子文件夹路径。
如果你的输入来自递归列文件夹的命令(比如dir /s /b /ad),直接管道输出到该findstr即可:
dir /s /b /ad | findstr /r /c:"^.*/[^/0-9].*\([0-9]_[0-9]\|[0-9][0-9]_[0-9][0-9]\)[^/]*/*$"
内容的提问来源于stack exchange,提问作者Sas
相关产品推荐
相关产品推荐

