![当 Linux 中两个文件夹几乎相同时如何比较它们?](https://linux22.com/image/1339329/%E5%BD%93%20Linux%20%E4%B8%AD%E4%B8%A4%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E5%87%A0%E4%B9%8E%E7%9B%B8%E5%90%8C%E6%97%B6%E5%A6%82%E4%BD%95%E6%AF%94%E8%BE%83%E5%AE%83%E4%BB%AC%EF%BC%9F.png)
通常我用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