协慌网

登录 贡献 社区

给定两个目录树,我如何找出哪些文件不同?

如果要查找两个目录树之间的差异,通常只执行:

diff -r dir1/ dir2/

这将准确输出相应文件之间的区别。我只想获取内容不同的相应文件的列表。我以为这只是将命令行选项传递给diff ,但是我在手册页上找不到任何内容。

有什么建议么?

答案

您说过 Linux,所以很幸运(至少它应该可用,不确定何时添加):

diff --brief --recursive dir1/ dir2/ # GNU long options
diff -qr dir1/ dir2/ # common short options

应该做你所需要的。

如果您还想查看两个目录中可能不存在的文件的差异,请执行以下操作:

diff --brief --recursive --new-file dir1/ dir2/ # GNU long options
diff -qrN dir1/ dir2/ # common short options

我使用的命令是:

diff -qr dir1/ dir2/

它与 Mark 的完全相同:) 但是他的回答使我感到困扰,因为它使用了不同类型的标志,并且使我看上去两次。使用 Mark 更详细的标志,它将是:

diff  --brief --recursive dir1/ dir2/

对于其他答案完全可以接受的情况,我深表歉意。无法阻止自己... 努力减少学究。

我喜欢使用git diff --no-index dir1/ dir2/ ,因为它可以显示颜色差异(如果您在 git config 中设置了该选项),并且因为它在使用的长页输出中显示了所有差异 “减”。