协慌网

登录 贡献 社区

给定两个目录树,如何找出内容不同的文件?

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

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 中设置了该选项),并且因为它使用 “较少的”。