如何在Shotwell中删除重复导入的照片

我注意到Shotwell导入了很多图片两次(例如从我的相机SD卡)。显然,一旦照片被导入、标记并重新导入,重复检测就会出错
我在设置中启用了“写入元数据标签”。如果我导入一张名为test-images.jpg的照片并给它添加标签,再次导入相同文件时,重复检测将不会识别出这张照片。 第二次导入该文件时,它将被命名为test-images-1.jpg,并根据活动规则放置在库文件夹中(不一定是同一个文件夹)。 test-images.jpgtest-images-1.jpg具有相同的图像数据,但由于添加了标签/元数据,这些文件不再相同,因此无法通过搜索重复项(例如md5哈希)来识别。
导致多个重复项的使用场景如下:
  1. 我用手机拍照
  2. 我从手机导入照片,添加标签,但保留在手机上,因为我想要保留它们以便分享等等。
  3. 我给导入的照片添加更多标签
  4. 几周后,我再次从手机进行导入,已经导入过的旧照片会再次被导入(添加了“-1.jpg”或“-2.jpg”)

如何清理重复照片? 使用基于文件名的搜索是可能的,但我不能排除我没有导入以“-1”结尾的文件,而这个文件并不是重复的。

我该如何清理我的照片库?我尝试使用Shotwell中的搜索功能,但是对于超过1000张照片来说,肯定有更好、更可靠、更简单的方法。

我不太担心标签丢失的问题,通常第二次导入(重复的照片)没有应用任何标签。


可能是重复的问题:如何使用fdupes? - Panther
1我不同意这是一个重复的问题。如链接的错误报告中所描述,Shotwell具有检测重复文件的功能,但一旦第一个导入的文件被标记(并且标记被写入文件),文件的指纹/哈希值就会改变。因此,尽管它们可能是相同的文件(在导入时),但第一个导入的文件与下一个导入的文件是不同的。 - seb
如果文件的哈希值不同,并且你没有看到重复文件的某种模式,那么你将不得不手动解决这个问题。你能否更新你的问题,包括你在评论中发布的信息,并提供有关这些文件的额外信息。 - Panther
4个回答

有点像垃圾邮件,但是几个月前我遇到了同样的问题,然后我写了一个小工具来解决这个问题:

https://github.com/jesjimher/imgdupes

这是一个Python脚本,用于扫描目录树以寻找重复文件。它的语法故意与fdupes相似,但imgdupes只忽略所有元数据,并仅分析JPEG文件的图像数据块。这意味着即使物理文件不同(因此无法被fdupes/shotwell检测到),两个相同图像的不同版本,具有不同的标签、旋转标志、日期等,也会被报告为重复文件。
最近它改名为jpegdupes,并且现在可以在Pypi存储库中找到,所以可以像这样扫描重复图像的目录树:
sudo pip install jpegdupes jpegdupes -d ~/Photos/(或者你的路径)
它将查找实际上是相同图片的JPEG文件(仅在元数据上有差异),并交互式地显示差异,并询问要保留哪个版本。
希望对你有所帮助。

好的,我会试一试...除了其他我尝试过的选项,比如搜索建议。 - seb
这是一个很棒的工具,正好符合我的需求。它应该被整合到Shotwell中。 - MathKid

我几周前遇到了同样的问题。我找到的解决办法很基本但有效:在Shotwell中创建一个新的保存搜索,显示所有未标记且文件名以"_1.jpg"结尾的图片。 然后,你可以删除Shotwell列出的此搜索结果中的所有文件,但要小心,在此之前先备份一下;-) 在我的情况下,我删除了2000多张照片!

你可以将标记的文件复制回手机,这样它们就不再不同了吗?我认为Shotwell应该能够处理自己的标记,这对我来说看起来像是一个bug。 我有一个类似的问题,但是每次运行Shotwell时都会重新开发相机的原始文件。

我遇到了同样的问题,并通过将Shotwell中的所有图像导出到另一个文件夹中解决了它。即使有重复的图像,Shotwell也只会显示一次。例如,我的文件夹中有64K的图像,但Shotwell只显示了32K。所以我选择了全部图像并导出,保留了大小、名称、元数据等信息。 唯一的缺点是:如果你的文件夹结构很复杂,并且你想保持它不变-这个解决方案可能对你无效。现在我把所有东西都放在一个文件夹里。顺便说一句,看起来这个bug现在已经修复了。