递归比较两个目录,\bin\ 和 \obj\ 除外

递归比较两个目录,\bin\ 和 \obj\ 除外

我正在尝试使用 WinMerge 比较两个目录:

C:\用户...\桌面\比较\35_A

C:\用户...\桌面\比较\35_HS

## This is a directory/file filter for WinMerge 
## This filter lets through only files ASP.NET developers care about 
name: ASP.NET Devel 
desc: Lets through only files ASP.NET developer cares about

## This is an exclusive filter 
## (it lets through only matching files) 
def: exclude 

## Filters for filenames begin with f: 
## Filters for directories begin with d: 
## (Inline comments begin with " ##" and extend to the end of the line) 

f: \.xml$ 
f: \.xlst$
f: \.xsl$
f: \.xslt$
f: \.dtd$ 
f: \.html$ 
f: \.htm$ 
f: \.css$ 
f: \.gif$ 
f: \.bmp$ 
f: \.jpg$ 
f: \.png$ 
f: \.js$ 
f: \.dll$ 
f: \.aspx$ 
f: \.asmx$ 
f: \.ascx$ 
f: \.vb$ 
f: \.resx$ 
f: \.cs$ 
f: \.js$ 
f: \.vbproj$ 
f: \.csproj$ 
f: \.sln$ 
f: \.webinfo$ 
f: \.config$ 

d: \\*$ ## Subdirectories 

def: exclude
d: \\bin
d: \\obj

最后 3 行不是过滤器的一部分,我添加了它们,因为我试图忽略所有 \bin\ 和 \obj\ 目录中的所有内容。我尝试了和def: includedef: exclude但都没有提供准确的结果。

我查看了 WinMerge 中有关文件过滤器的帮助文档,但我不明白。

答案1

包括排除请参阅比较后文件和文件夹列表中显示的内容。过滤器包括包括排除列表中的事物。

如果你使用排除过滤器,它从文件列表中排除所有内容不是列在过滤器中。

如果你使用包括过滤器,它包括文件列表中的所有内容不是列在过滤器中。

在您的例子中,您使用的是排除,因此您只会看到您在过滤器中明确列出的文件和文件夹。要阻止binobj文件夹,您需要知道全部您可能想要查看的其他文件夹,以便它们可以在您的过滤器中列出。

我发现,对于代码来说,使用包含过滤器更简单。这样,我就可以屏蔽掉我不关心的文件夹和文件。

将第一个改为def:include并删除第二个def。我认为你只能有一个def。你的d:规则将是

d: \\bin$
d: \\obj$

答案2

正如其他人提到的,您只能有一行def:,并且过滤器实际上执行指令的相反操作def:(即过滤器实际包含文件时defexclude

因此,有了这些知识,我们可以看到下面一行包括所有子目录。

d: \\*$ ## Subdirectories

我没有安装 WinMerge,也不熟悉其中的 RegEx 引擎,但您可以尝试使用负面查找来包含除“bin”和“obj”之外的所有子目录:

d: ^\\((?!bin|obj)(.+)|(.+)(?<!bin|obj))$

答案3

我对@heavyd 的回答取得了一些有限的成功,但后来发现在 WinMerge 的明显继任者 WinMerge2011 中这要容易得多。

使用 WinMerge2011 我

xd: \\bin(\\.+|)$
xd: \\obj\\

查找文档可能很困难,但我发现 http://forums.winmerge.org/viewtopic.php?f=4&t=1010

WinMerge 2011 中的文件/目录过滤器已得到增强,允许组合包含规则和排除规则。如果在 .flt 文件中省略 def: 标签,则 f: 和 d: 将作为包含规则运行,除非以 x 为前缀,在这种情况下它们将作为排除规则运行。f: 和 d: 标签(同样可选地以 x 为前缀以形成排除规则)也可以与通配符过滤器一起使用。

仅供参考,WinMerge 似乎不再开发。请参阅https://en.wikipedia.org/wiki/WinMerge. 下载 WinMerge2011https://bitbucket.org/jtuc/winmerge2011/downloads/

答案4

在最新版本中,您可以在Select files对话框中指定:

在此处输入图片描述

https://github.com/WinMerge/winmerge/discussions/1571

相关内容