2009-04-22 25 views
42

我有两个目录包含源文件到一个项目,我很少通过文档继承。我如何比较两个目录以查看差异。谢谢。如何比较Linux中的两个源代码树?

+0

有了上面提供的所有正确答案,如果您需要任何视频帮助,我在搜索答案中找到了这个有用的视频https://www.youtube.com/watch?v=TcJkLV1EeUU – 2014-11-19 13:52:09

回答

33

您可以尝试MELD: http://meld.sourceforge.net/ 这是一场精彩的视觉差异的工具;-)

+0

非常感谢,我发现了Meld在发布我的问题后迟到了,它几乎是我想要的。如果我不需要将代码下载到本地计算机,而是将其作为远程服务器上的代码,并且(不幸)没有像CVS或Subversion那样签入,那将会很好。 – freakwincy 2009-04-22 12:25:00

+0

Meld可以让你看到树结构中的差异以及文件中的逐行比较。另外,您可以选择性地将更改应用到一个目录中。华丽的! – 18446744073709551615 2012-05-11 06:13:30

+0

我已经使用过Meld进行文件比较了,但是我没有意识到这对于树对比来说非常棒。 – 2013-04-08 11:55:00

5

您可以在外壳使用diff命令。或安装喜欢kdiff3

+2

KDiff3 +1。作品比较目录(和子目录等) – 2009-04-22 12:03:52

24
diff -u -r dirA dirB 

工具会告诉你在迪拉和DIRB

47

文件之间统一的递归差异试试这个:

diff -Naur dir1/ dir2/ 
  • -u选项使输出 稍微容易阅读。
  • 通过所有 子目录
  • -N-a选项-r选项递归真的 只有当你想创建 补丁文件必要。
1

diff命令比较目录一直告诉我,我没有差异,当我知道有差异。

而不是直接使用差异的,我用MD5SUMS的排序列表,然后比较这些文件与差异:

find /path1/dir/ -type f -exec md5sum {} + | awk '{print $2 $1}' | sort >! path1.log 
find /path2/dir/ -type f -exec md5sum {} + | awk '{print $2 $1}' | sort >! path2.log 
gvimdiff path1.log path2.log 

如果路径的开始部分引起头痛,然后改变它。选择路径1窗口,键入:

:%s|path1|path2|g 

这将取代PATH1的所有实例与路径2中的第一个文件,现在你的差异应该只示区别。