首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >检查两个dir是否具有相同的内容。

检查两个dir是否具有相同的内容。
EN

Ask Ubuntu用户
提问于 2015-06-17 15:02:15
回答 1查看 995关注 0票数 2

我通常用临时名称命名文件,然后根据需要重命名它。

现在,我在不同的位置有两个同名的迪伦,文件的大小和数量相同,但是文件的名称不同。

那么,我的问题是如何知道这个目录是否与那个目录相同?

EN

回答 1

Ask Ubuntu用户

发布于 2015-06-17 15:38:45

正如我所理解的,我找到了解决方案:只在两个目录中查找文件,获取每个文件的md5哈希,排序,并验证散列是否匹配。

在bash中,可以使用find -type f参数只获取文件,并使用-exec md5sum {} \;从文件中获取MD5散列,从而从dir获取所有文件(包括子目录)。通过这种方式,您必须切断文件名和排序,使用|cut -d\ -f1|sort对生成的散列进行排序。使用这两个dir,并将输出推送到每个dir的文件中:

代码语言:javascript
代码运行次数:0
运行
复制
find path/to/dir1 -type f -exec md5sum "{}" \; |cut -d\  -f1 |sort > /tmp/hashes_dir1
find path/to/dir2 -type f -exec md5sum "{}" \; |cut -d\  -f1 |sort > /tmp/hashes_dir2

之后,您只需比较生成的文件:

代码语言:javascript
代码运行次数:0
运行
复制
diff /tmp/hashes_dir1 /tmp/hashes_dir2

如果上述输出为空,则两个dir文件的内容相同。如果没有(例如,只有一个目录中有一个重复的文件),则输出不会为空。

编辑:此外,您还可以看到对应的文件从两个第一命令中切断cutsort管道,将输出推送到同一个文件,并使用cat打印文件,用sort打印管道以进行比较:

代码语言:javascript
代码运行次数:0
运行
复制
find path/to/dir1 -type f -exec md5sum "{}" \; > /tmp/hashes_dir
find path/to/dir2 -type f -exec md5sum "{}" \; >> /tmp/hashes_dir
cat /tmp/hashes_dir |sort

通讯文件将出现在另一个旁边。

Edit2:看看它是如何工作的:http://pastebin.com/dW7LrZkR

票数 5
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/637648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档