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

﹥>﹥吖頭↗ 提交于 2019-12-28 18:27:34

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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

diff -r dir1/ dir2/

这准确地输出了相应文件之间的差异。 我有兴趣只获取内容不同的相应文件列表。 我认为这只是将命令行选项传递给diff ,但我在手册页上找不到任何内容。

有什么建议?


#1楼

我使用的命令是:

diff -qr dir1/ dir2/

它与马克的完全相同:)但是他的回答让我困扰,因为它使用了不同类型的旗帜,它让我看了两次。 使用Mark的更详细的标志,它将是:

diff  --brief --recursive dir1/ dir2/

当其他答案完全可以接受时,我为发布而道歉。无法阻止自己...努力减少迂腐。


#2楼

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


#3楼

频道同胞'账单'(freenode /#centos成名)与我分享他的方法:

diff -Naur dir1/ dir2

包括最终目录正斜杠无关紧要。

此外,似乎-u选项在某些较旧/服务器版本的diff上不可用。

差异的差异:

# diff -Nar /tmp/dir1 /tmp/dir2/
diff -Nar /tmp/dir1/file /tmp/dir2/file
28a29
> TEST

# diff -qr /tmp/dir1/ /tmp/dir2/
Files /tmp/dir1/file and /tmp/dir2/file differ

#4楼

这两个命令基本上要求的是:

diff --brief --recursive --no-dereference --new-file --no-ignore-file-name-case /dir1 /dir2 > dirdiff_1.txt

rsync --recursive --delete --links --checksum --verbose --dry-run /dir1/ /dir2/ > dirdiff_2.txt

它们之间的选择取决于dir1和dir2的位置:

当目录驻留在两个单独的驱动器上时,diff优于rsync。 但是当比较的两个目录在同一个驱动器上时,rsync会更快。 这是因为diff在两个目录上并行放置几乎相等的负载,从而最大化两个驱动器的负载。

rsync在实际比较它们之前计算大块中的校验和。 它将i / o操作分组为大块,并在单个驱动器上进行更有效的处理。


#5楼

Meld也是比较两个目录的好工具:

meld dir1/ dir2/

Meld有许多用于比较文件或目录的选项。 如果两个文件不同,则很容易进入文件比较模式并查看确切的差异。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!