如何消除重复文件

如何消除重复文件

我使用 UbuntuStudio 20.04。

我想知道是否有一些 Linux 原生应用程序(带有 GUI)可以消除重复文件,不仅与文件的名称有关,还与其内容有关。

我说的是比较长度和内部值来获取是否存在重复的文件,即使它们的名称不一样(例如:不同文件夹中具有不同名称的相同视频)。

有类似的东西吗?在哪里?

答案1

dupeGuru

看看 dupeGuru。是 GUI 的替代品。

dupeGuru是一个跨平台(Linux、OS X、Windows)GUI 工具,用于查找系统中的重复文件。它主要用 Python 3 编写,并且具有使用多个 GUI 工具包的特点,所有工具包都使用相同的核心 Python 代码。在 OS X 上,UI 层用 Objective-C 编写并使用 Cocoa。在 Linux 和 Windows 上,它用 Python 编写并使用 Qt5。

答案2

重复项

不知道 GUI 程序,但是有一个强大的 CLI 工具:重复项

在给定路径中搜索重复文件。通过比较文件大小和 MD5 签名,然后逐字节比较来找到此类文件。

源代码在 GitHUB 上
Ubuntu 手册页

安装

sudo apt install fdupes

用法

# List dupes in an entire directory
# -r : recursive
fdupes -r /path/to/adir
# List and delete dupes in a dir
# -r : recursive
# -d : preserve first file, delete other dupes
fdupes -rd /path/to/adir

有关的:Ubuntu 20.04 的 fslint(重复文件查找器)在哪里?

答案3

我找到了一份名单我在进行搜索时发现了一些 GUI 重复查找器,并且认为我应该将其添加到其中,因为这个页面在我的搜索中拥有相当不错的 SEO 排名。

请注意,这些都应该与发行版无关(例如,它们应该与 Ubuntu 以及任何其他发行版兼容),但我有不是测试了它们。列出的应用程序据我所知,所有这些都符合 OP 中提到的要求(例如,它们是 Linux本国的应用程序和图形用户界面,根据描述,它们都应该可以作为重复检测器使用)。我也选择尝试让我的笔记与发行版保持同等的相关性。

该链接包含一个表格,试图进行功能比较。我不会抄袭表格,但我明白人们喜欢答案包含的不仅仅是一个链接,所以我还将列出列表中的应用程序以及我自己的一些注释:

  • 杜佩古鲁:另一个答案中建议了同样的事情,这可能也是我向大多数用户推荐的(特别是对于使用 Ubuntu 的用户,因为它有一个官方的电力供应协议撰写本文时适用于 Ubuntu Focal/Bionic/Xenial 或deb 文件在他们的 GitHub 发布页面上)。如果你使用的是非基于 Ubuntu/Debian 的发行版,则有一个tar 文件或者您可以从源代码构建。
  • Rmlint图形用户界面:我看到一些页面提到这款产品以前叫做“Shredder”。我在网上看到了很多不错的介绍,但我自己还没有试过。我发现此文档链接在找到链接的比较表之前。我目前没有使用 Ubuntu PC,但是根据 repology它应该位于大多数发行版的中央存储库中,包括 Ubuntu、Debian、Arch、Manjaro、Fedora 和许多其他发行版。它似乎在 GitHub 上没有任何预编译的二进制版本,但可以从源代码构建。
  • 底特律:我对这个不太了解。他们的 GitHub 自述文件中有一点很有趣,那就是它支持“搜索和删除重复文件和类似图片“。它有一个可用的 flatpak这里。但它似乎不在任何发行版的中央存储库中(根据 repology),也不提供 snap 或预编译的二进制文件。因此,如果 flatpaks 不是一个选项,那么从源代码构建可能是唯一的其他途径。
  • 茨考卡:简洁的基于 rust 的 GUI,但如果您只想报告而不实际删除重复项,可能会出现问题(请参阅下面的注释和链接问题 - 我自己没有验证此问题,只是传递警告)。根据这一页cargo,它应该可以通过 snap、flatpak、appimage、rust 的管理器、PPA、AUR(针对 Arch 用户)、GitHub 上的预编译二进制文件或从源代码构建获得。
  • FSlint:由于 python2 依赖性,此功能在 Ubuntu 20.04 及更高版本中已弃用,但存在解决方法如果您同意安装已弃用的软件包或使用非官方的 snap 包。对于大多数用户,我不建议这样做。(除非有新的 python3 分支出来……我不会屏住呼吸,因为开发者 pixelb 已经声明“说实话,我真的没有时间 [继续维护 fslint]。”并推荐使用 czkawka 作为更现代的替代品)。

不过,我认为至少有一个链接的项目可能需要手动编译,除非您对 flatpaks 之类的东西没有异议。

还有至少一个问题需要注意:链接帖子中的一位用户报告说“与 FSLint 不同,Czkawka 会直接删除文件的所有副本而不发出警告“。我知道我遇到的一个页面确实提到了“预览”按钮,因此可能存在不同的操作,只有预览不会产生任何变化。因此,从评论中我不清楚这是程序的错误/意外行为还是用户的一些误解。无论哪种方式,如果您选择尝试茨考克,首先对您不关心的数据运行一些测试似乎是明智的。

答案4

林特

rmlint是一款用 Rust 编写的出色工具。它不会直接删除任何文件,而是生成一个经过调整的文件rmlint.sh,提供几个可执行任务的参数。

例子:

# Search for duplicate files over 10MB with a progress bar
rmlint -T "df" --size 10M -g

# Start the optional graphical frontend to rmlint called Shredder
rmlint --gui 

rmlint查找文件系统上的空间浪费和其他损坏的内容,并建议将其删除。它能够找到:

  • 重复的文件和目录。
  • 未剥离的双星
  • 损坏的符号链接。
  • 空文件。
  • 递归空目录。
  • 具有损坏的用户或组 ID 的文件。

另一个很好的选择是奇考夫卡

相关内容