当 Linux 中两个文件夹几乎相同时如何比较它们?

当 Linux 中两个文件夹几乎相同时如何比较它们?

通常我用meld它来比较文件夹,但是当一个文件夹有许多子文件夹时,它就不方便了,因为我必须单击每个子文件夹才能查看是否有差异。

是否有一个工具可以比较文件夹并仅显示差异?

答案1

命令行 diff 将执行此操作,而一个小 grep 会为您提供不同文件的列表,例如:

diff -r dir1 dir2 | grep -e "Only|diff"

显然还有待改进……

答案2

为了进行良好的视觉并排比较,我喜欢使用两个 md5 校验和和 vimdiff 文件。

这还有一个额外的好处,就是可以轻松地比较两个不同服务器上的两个目录。

它仅显示哪些文件不同,而不是内部差异。

比较服务器 sr1 和 sr2 上的 /etc/ 目录:

(在第一台服务器上:)

for i in (find /etc/ -print); do md5sum $i; done | awk '{print $2 "\t" $1}' | sort > 
~/tmp/etc-sr1.txt

(在第二台服务器上:)

for i in (find /etc/ -print); do md5sum $i; done | awk '{print $2 "\t" $1}' | sort > 
~/tmp/etc-sr2.txt

scp ~/tmp/etc-sr2.txt sr1:tmp/etc-sr2.txt

(在第一台服务器上:)

vimdiff ~/tmp/etc-sr1.txt ~/tmp/etc-sr2.txt

相关内容