如何在bash中比较两个目录的内容?

时间:2013-05-09 23:19:03

标签: linux bash directory comparison zsh

让我们说有两个目的

/path1 and /path2

例如

/path1/bin
/path1/lib
/path1/...

/path2/bin
/path2/lib
/path2/...

如果内容(文件名和文件内容)相同,如果没有列出差异,则需要知道

如何在Linux中执行此操作? 是否有一些Bash / Zsh命令?

3 个答案:

答案 0 :(得分:5)

diff命令可以显示两个目录之间的所有差异: diff -qr /path1 /path2

答案 1 :(得分:3)

有人建议这已经删除了答案,但不确定原因。尝试使用rsync

rsync -avni /path1/ /path2

这个程序通常会同步两个文件夹,但是使用-n它会执行干运行。

答案 2 :(得分:1)

我正在使用此脚本执行此任务:

diff <(cd "$dir1"; find . -type f -printf "%p %s\n" | sort) \
     <(cd "$dir2"; find . -type f -printf "%p %s\n" | sort)       

随意调整<(...)部分中的脚本以满足您的特定需求。此版本使用find通过打印路径和在其中找到的文件大小来打印目录内容。其他事情当然是可能的。