【发布时间】:2015-03-17 10:25:02
【问题描述】:
我有两个文件夹,其中包含 100% 相同的照片(以及我需要的其他文件)。大约 100GB + 100GB。
每个像素都是相同的,但是由于添加了 exif 数据,哈希值并不匹配。我不想删除 exif。
有没有软件可以识别出像素相同的照片并删除其中一张,让其中一张只保留文件夹之间的差异?
【问题讨论】:
我有两个文件夹,其中包含 100% 相同的照片(以及我需要的其他文件)。大约 100GB + 100GB。
每个像素都是相同的,但是由于添加了 exif 数据,哈希值并不匹配。我不想删除 exif。
有没有软件可以识别出像素相同的照片并删除其中一张,让其中一张只保留文件夹之间的差异?
【问题讨论】:
您可以使用 ImageMagick 计算每个文件数据的哈希值 - 忽略 EXIF 数据,如下所示:
identify -format "%# %f\n" *jpg *.png
13604ac55b0af81970c9aa2a7df699f0c34b7bc7676b3cc78cf5f339246a146b tiles.jpg
ccc559642d15d9f6d16d99e5be2a7dae5d13e27cf0f6af974d7c73dd86974e1e 5.png
a136e20c10f161169f3603ad95c4ba31ded66d7e5e9f42233afe5821222b0dd0 7.png
cd46ad516c6fad8f14a80a0c9952a3121b4b123cec84423509ad32fa9ac6bacf a.png
然后将该数据放入一个文件中并通过sort 和uniq 运行以查找重复项。这样做的好处是不比较单个文件的所有可能组合,而只是为每个文件生成一次校验和。
ImageMagick 安装在大多数 Linux 版本上,可用于 OS X(我认为最好通过 homebrew)和 Windows - 请参阅 here。
【讨论】:
find . -name "*.jpg" -exec identify -format "%# %f\n" {},但它给出了错误:find: missing argument to -exec。我做错了什么?
find . -name \*.jpg -exec identify -format "%# %f\n" {} \;