马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、使用 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),避免误把源目录覆盖到目标目录造成数据丢失。 |