WinMerge过滤器问题:无法排除.vshistory文件夹仅对比.cpp/.h文件
WinMerge过滤器排除.vshistory文件夹问题解决
你的过滤器无法忽略.vshistory文件夹的核心问题是目录匹配规则写错了,WinMerge的d:规则针对的是目录名称,不是路径里的反斜杠片段,你写的\\(?<!\.vshistory)完全不符合目录名称的匹配逻辑,导致无法排除目标文件夹。
结合你需求(仅对比.cpp/.h文件,排除.vshistory文件夹),修正后的完整过滤器配置如下:
## This is a directory/file filter template for WinMerge name: C++ Files desc: Filter for C++ source and header files ## 默认排除所有内容,仅保留匹配规则的文件和目录 def: exclude ## 仅包含.cpp和.h类型的文件 f: \.(cpp|h)$ ## 排除名为.vshistory的目录,保留其他所有目录 d: ^(?!\.vshistory$)
简单解释
def: exclude表示默认排除所有文件和目录,只有匹配后续f:和d:规则的内容才会被纳入对比。^(?!\.vshistory$)是正则负向前瞻语法,意思是匹配所有名称不是.vshistory的目录,这样.vshistory目录会被默认规则排除,不会进入对比流程。
如果你习惯"默认包含所有,再排除不需要内容"的逻辑,也可以用下面的配置:
## This is a directory/file filter template for WinMerge name: C++ Files desc: Filter for C++ source and header files ## 默认包含所有内容,仅排除匹配规则的文件和目录 def: include ## 排除所有非.cpp/.h类型的文件 -f: !\.(cpp|h)$ ## 排除.vshistory目录 -d: \.vshistory$
内容的提问来源于stack exchange,提问作者Laila
相关产品推荐
相关产品推荐

