python - 使用 Python 查找重复文件

标签 python scripting

这是一个出现在 Python 编码竞赛中的问题,想知道如何实现。

问题陈述:

你有两个目录(里面可能有子目录)。您的脚本应该通过比较两个根目录中相同文件名的内容来找出重复文件

结果: 失败:如果至少一个相同文件名的内容不同

通过:否则

这是一个示例图

 /dir1                       /dir2
       -- file1                   -- file1 
       -- file2                   -- fileA  
       -- file3                   -- fileB   
       -- ....
       -- ...
       ---/subDir1
            --file1
            --file2

file1 of dir1 contains :- foo bar
file1  of dir2 contains :- foo 
Result - Fail

file1  of dir1 contains :- foo bar
file1  of dir2 contains :- foo bar
Result - Pass.

我尝试按文件大小使用散列,但显然不是这样:)

PS:任何脚本语言都可以。

谢谢 凯利

最佳答案

您可以分层解决这个问题。

  1. 遍历每个目录/子目录,比较文件的大小。
  2. 如果文件大小不同=>失败
  3. 如果不匹配则计算每个文件的 SHA1 哈希 => 失败
  4. 如果 SHA1 哈希值匹配,则对内容进行逐字节比较 在文件中绝对确定。

关于python - 使用 Python 查找重复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9510865/

相关文章:

bash - 如果节尚不存在,如何向节添加行

python - 如何使用 ctypes 和线程为 C 回调函数分配内存

python - 将 blocktrans 与 "with"和 "count"关键字一起使用

linux - 如果 "NULL"然后在 shell 脚本中使用 0

postgresql - 包含脚本中的 psql 变量

linux - 在 Ubuntu 上重生挂起进程的最佳语言/方法?

python - 单击来自 gmail 收件箱 Python 的特定电子邮件

python - rpy2、R 和 Ubuntu 12.04 - 无效的子字符串 -fopenmp

python - 导入 "rest_framework"无法解析。但是我已经安装了djangorestframework,不知道哪里出了问题

bash - 获取 shell 脚本错误的行号