Bio*_*eek 14 windows python deduplication image-processing
我的 Windows 计算机上有很多重复的图像文件,它们位于不同的子文件夹中,并且具有不同的文件名。
您会推荐什么 Python 脚本或免费软件程序来删除重复项?
(我读过这个类似的问题,但那里的海报询问了不同文件大小的视觉重复。我的是具有不同文件名的完全重复。)
Ken*_*ric 17
不要依赖 MD5 和。
MD5 总和不是检查重复项的可靠方法,它们只是检查差异的一种方法。
使用MD5查找可能的 候选重复项,然后为每对共享一个 MD5
看到我被那些以天真的方法提交重复身份的人拒绝投票,如果你要完全依赖哈希算法,看在上帝的份上,使用更难的东西,比如 SHA256 或 SHA512,至少你会降低概率通过检查更多位来达到合理的程度。MD5 在碰撞条件下非常弱。
我还建议人们阅读此处标题为“文件检查”的邮件列表:http : //london.pm.org/pipermail/london.pm/Week-of-Mon-20080714/thread.html
如果您说“MD5 可以唯一地唯一标识所有文件”,那么您就有逻辑错误。
给定一系列值,长度从 40,000 字节到 100,000,000,000 字节不等,可用于该范围的组合总数大大超过了 MD5 表示的值的可能数量,长度仅为 128 位。
仅用 2^128 个组合表示 2^100,000,000,000 个组合?我认为这不太可能。
清除重复项的最简单,也是最快的方法如下。
Fdupes 就是这样做的。并且您应该使用使用相同标准的软件。
小智 10
它是unix(包括linux)操作系统或安装了Cygwin的Windows上的单线:
find . -type f -print0 | xargs -0 shasum | sort |
perl -ne '$sig=substr($_, 0, 40); $file=substr($_, 42); \
unlink $file if $sig eq $prev; $prev = $sig'
Run Code Online (Sandbox Code Playgroud)
如果您知道没有故意制造的碰撞,则可以使用 md5sum(大约快 50%)(与找到一次自然发生的 md5 碰撞的机会相比,您赢得 10 个主要彩票的机会更大。)
如果您想查看您拥有的所有副本而不是删除它们,只需将unlink $file
部分更改为print $file, "\n"
.
归档时间: |
|
查看次数: |
5661 次 |
最近记录: |