Linux下快速比较两个目录的差别,包罗文件内容

[复制链接]
发表于 2026-10-6 14:36:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

一、使用 diff 命令

diff 是最直接的方法,可以递归地比较两个目录中的文件并显示内容差异:

diff -r dir1/ dir2/
  • -r 表示递归比较子目录及文件;
  • 若文件内容不同,diff 会逐行显示差异。

如果只想看哪些文件不同、不关心具体内容,可以加 --brief:

diff -r --brief dir1/ dir2/
  • --brief 只报告存在差异或缺失的文件,不显示具体内容差异。

二、使用 rsync 的 --dry-run 与 --checksum

rsync 可以用 --checksum 比较文件内容是否一致,配合 --dry-run 能快速列出差异而不真正同步:

rsync -rcn --delete dir1/ dir2/
  • -r 递归比较目录;
  • -c 用校验和判断内容是否一致,而非仅比较大小与时间戳;
  • -n 只显示将要执行的操作,不实际执行。

三、使用 cmp 与 find 做逐字节对比

cmp 用于逐字节比较两个文件,可结合 find 遍历目录:

find dir1/ -type f | while read file; do
    cmp "$file" "${file/dir1/dir2}" > /dev/null
    if [ $? -ne 0 ]; then
        echo "$file differs"
    fi
done

该脚本遍历 dir1 中所有文件,并用 cmp 与 dir2 中对应文件比较,不同则输出文件名。

四、使用 diffoscope(高级工具)

diffoscope 能深入比较文件与目录差异,包括压缩包、二进制文件等,并给出详细结果:

diffoscope dir1/ dir2/

适合需要精细诊断文件差异的场景。

五、使用 meld(图形化工具)

如果更习惯图形界面,可以用 meld 比较两个目录及文件内容:

meld dir1/ dir2/

meld 支持详细的内容比较,并以图形方式高亮显示差异。

六、该怎么选

根据需求选择工具:简单快速地比较目录与文件内容,diff 和 rsync 是不错的选择;需要更精细、高级的比较时,diffoscope 和 meld 更合适。

qidao123.com企服评测-应用市场 编辑提示:用 rsync 做差异比对时务必带上 -n(dry-run),避免误把源目录覆盖到目标目录造成数据丢失。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表