若是我想找到两个目录树之间的差别,我一般只执行: node
diff -r dir1/ dir2/
这准确地输出了相应文件之间的差别。 我有兴趣只获取内容不一样的相应文件列表。 我认为这只是将命令行选项传递给diff
,但我在手册页上找不到任何内容。 git
有什么建议? centos
我使用的命令是: 服务器
diff -qr dir1/ dir2/
它与马克的彻底相同:)可是他的回答让我困扰,由于它使用了不一样类型的旗帜,它让我看了两次。 使用Mark的更详细的标志,它将是: 工具
diff --brief --recursive dir1/ dir2/
当其余答案彻底能够接受时,我为发布而道歉。 没法阻止本身...努力减小迂腐。 spa
我喜欢使用git diff --no-index dir1/ dir2/
,由于它能够显示颜色的差别(若是你在git配置中设置了该选项),而且由于它显示了长页面输出中的全部差别“减”。 命令行
频道同胞'帐单'(freenode /#centos成名)与我分享他的方法: code
diff -Naur dir1/ dir2
包括最终目录正斜杠可有可无。 get
此外,彷佛-u
选项在某些较旧/服务器版本的diff上不可用。 it
差别的差别:
# 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
这两个命令基本上要求的是:
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操做分组为大块,并在单个驱动器上进行更有效的处理。
Meld也是比较两个目录的好工具:
meld dir1/ dir2/
Meld有许多用于比较文件或目录的选项。 若是两个文件不一样,则很容易进入文件比较模式并查看确切的差别。