假设有两个目录
/path1 and /path2
例如
/path1/bin
/path1/lib
/path1/...
/path2/bin
/path2/lib
/path2/...
并且需要知道它们在内容(文件名和文件内容)上是否相同,如果没有列出差异。
如何在 Linux 中做到这一点?有一些 Bash/Zsh 命令吗?
假设有两个目录
/path1 and /path2
例如
/path1/bin
/path1/lib
/path1/...
/path2/bin
/path2/lib
/path2/...
并且需要知道它们在内容(文件名和文件内容)上是否相同,如果没有列出差异。
如何在 Linux 中做到这一点?有一些 Bash/Zsh 命令吗?
diff 命令可以显示两个目录之间的所有差异:
diff -qr /path1 /path2
有人已经提出了这个建议,但删除了他们的答案,不知道为什么。尝试使用rsync
:
rsync -avni /path1/ /path2
该程序通常会同步两个文件夹,但使用 -n 它将进行空运行。
我正在使用这个脚本来完成这样的任务:
diff <(cd "$dir1"; find . -type f -printf "%p %s\n" | sort) \
<(cd "$dir2"; find . -type f -printf "%p %s\n" | sort)
随意调整<(...)
部分中的脚本以满足您的特定需求。此版本用于find
通过打印在其中找到的文件的路径和大小来打印目录内容。其他的事情当然是可能的。