我正在比较两个几乎相同的文件夹,其中包括应该忽略的隐藏 .svn 文件夹,并且我想不断快速比较这些文件夹,因为一些文件被修补以比较差异,而无需再次检查未更改的匹配文件。
编辑:因为有这么多的选择,我对一个明显利用先前比较知识的解决方案感兴趣,因为在进行重复比较时,任何其他解决方案都不是真正可行的。
我正在比较两个几乎相同的文件夹,其中包括应该忽略的隐藏 .svn 文件夹,并且我想不断快速比较这些文件夹,因为一些文件被修补以比较差异,而无需再次检查未更改的匹配文件。
编辑:因为有这么多的选择,我对一个明显利用先前比较知识的解决方案感兴趣,因为在进行重复比较时,任何其他解决方案都不是真正可行的。
如果你愿意花一点钱,Beyond Compare 是一个非常强大的 diffing 工具,可以进行基于文件夹的 diffing。
一种选择是使用rsync
. 就像是:
rsync -n -r -v -C dir_a dir_b
该-n
选项会进行试运行,因此不会修改任何文件。 -r
进行递归比较。可以选择使用 开启详细模式-v
。(您可以使用-i
来逐项列出更改而不是-v
。)忽略通常被忽略的文件,例如.svn/
使用-C
。
diff
当我阅读手册页时,这应该比简单的要快rsync
:
Rsync 使用“快速检查”算法(默认情况下)查找需要传输的文件,该算法查找大小或上次修改时间已更改的文件。当快速检查指示文件的数据不需要更新时,直接在目标文件上进行其他保留属性的任何更改(根据选项的要求)。
由于“快速检查”算法不直接查看文件内容,它可能会被愚弄。在这种情况下,-c
可能需要执行校验和的选项。它很可能比普通的要快diff
。
此外,如果您计划在某个时候同步目录,这也是该工作的好工具。
并非万无一失,但您可以比较时间戳。
使用总指挥官!所有很酷的开发人员都使用它:)
If you are on linux or some variant, you should be able to do:
prompt$ diff -r dir1 dir2 --exclude=.svn
The -r forces recursive lookups. There are a bunch of switches to ignore stuff like whitespace etc.