当前位置: 首页 > news >正文

Ubuntu 比较两个文件夹

比较两个文件夹下的大量文件是否一致,可以通过以下几种方式完成:

1. 使用 diff 命令

diff 命令不仅可以比较文件,还能递归比较文件夹。可以使用 -r 选项来递归比较两个目录下的文件:

diff -r /path/to/dir1 /path/to/dir2 
  • 如果目录中的文件相同,diff 不会输出任何内容。
  • 如果目录中的文件不同,diff 会列出差异。

使用 -q 选项可以只显示文件是否不同,而不输出详细的差异:

diff -qr /path/to/dir1 /path/to/dir2 

2. 使用 rsync 命令

rsync 是一个强大的工具,通常用于同步文件,但它也可以用于比较文件夹的内容。rsync-n(dry-run)选项可以模拟文件同步操作,而不会实际更改文件,配合 --delete--itemize-changes,可以显示两目录的差异:

rsync -avcn --delete /path/to/dir1/ /path/to/dir2/ 
  • -a:归档模式,保持文件权限、时间戳等。
  • -v:详细输出。
  • -c:使用文件内容(而不是时间戳)来比较文件。
  • -n:只进行模拟,不实际执行复制。
  • --delete:报告第二个目录中多余的文件。
  • --itemize-changes:显示具体的差异。

3. 使用 cmp 命令结合 find

cmp 命令可以比较文件的字节,结合 find 命令递归遍历两个目录并比较它们的文件内容:

find /path/to/dir1 -type f | while read file; do cmp "$file" "/path/to/dir2/${file#/path/to/dir1}" done 

这个脚本会遍历 dir1 中的所有文件,并使用 cmp 比较 dir2 中对应的文件。

4. 使用 md5sumsha256sum

如果你想通过检查哈希值来比较文件,md5sumsha256sum 命令是很好的选择。这适用于大型文件夹或需要确保文件内容一致的情况。你可以生成每个文件的哈希值并比较哈希值文件。

find /path/to/dir1 -type f -exec md5sum {} + > dir1_checksums.txt find /path/to/dir2 -type f -exec md5sum {} + > dir2_checksums.txt diff dir1_checksums.txt dir2_checksums.txt 

这会生成两个文件夹的哈希值文件并使用 diff 比较它们。若输出为空,则文件夹内容完全一致。

5. 使用 fdupes

fdupes 是一个工具,专门用于查找重复文件。它不仅可以查找重复文件,还可以用于比较文件夹中是否有重复内容。可以安装并使用以下命令:

sudo apt install fdupes fdupes -r /path/to/dir1 /path/to/dir2 

-r 选项表示递归比较。如果没有任何输出,则两个目录的文件是不同的。如果有重复的文件,它会显示这些文件的路径。

6. 使用 diffoscope(高级比较工具)

diffoscope 是一个功能强大的工具,专门用于比较目录和文件的详细差异,适合复杂的比较需求。

sudo apt install diffoscope diffoscope /path/to/dir1 /path/to/dir2 

它会生成非常详细的差异报告。

结论

  • 如果你只想简单地确认文件夹是否一致,diff -qr 是最简便的解决方案。
  • 如果你需要更高效的方式来处理大量文件,并且要同时考虑文件内容、权限等因素,rsync -avcn 是一个很好的选择。
  • 对于哈希校验,md5sumsha256sum 是理想的选择,可以验证文件内容是否完全相同。

 

http://www.lryc.cn/news/433066.html

相关文章:

  • 两数之和--力扣1
  • vue原理分析(三)new()创建Vue实例
  • Spring MVC: 构建Web应用的强大框架
  • 网络学习-eNSP配置NAT
  • 动态规划-最长回文子串
  • 海康威视 嵌入式 面经 海康威视嵌入式软件 嵌入式硬件总结面试经验 面试题目汇总
  • 使用图论技巧——有遍数限制的最短路
  • flume 使用 exec 采集容器日志,转储磁盘
  • 459重复的子字符串
  • 【HarmonyOS NEXT】实现截图功能
  • 小皮面板webman ai项目本地启动教程
  • 从零实现诗词GPT大模型:实现多头自注意力
  • [rk3399 android11]关闭声卡
  • 项目实战 ---- 商用落地视频搜索系统(7)---预处理二次优化
  • 【干货分享】央企国企的群面、半结构面试复习方法和经验总结
  • 前端HTML基础笔记
  • 用三极管搭建简易电流源
  • MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源
  • Android Google Maps
  • Linux——进程概念
  • 【H2O2|全栈】关于HTML(1)认识HTML
  • Oracle(111) 如何使用RMAN备份数据库?
  • linux字符设备驱动程序
  • 【pyhton】python如何实现将word等文档中的文字转换成语音
  • Claude Enterprise推出计划
  • 【前端】CSS控制style样式失效
  • How can I load the openai api configuration through js in html?
  • Pipeline流水线通过git拉取Jenkinsfile报错 error: RPC failed; result=22, HTTP code = 404
  • 【与C++的邂逅】--- string容器使用
  • 1-18 平滑处理——高斯滤波 opencv树莓派4B 入门系列笔记