![如何消除重复文件](https://linux22.com/image/1172653/%E5%A6%82%E4%BD%95%E6%B6%88%E9%99%A4%E9%87%8D%E5%A4%8D%E6%96%87%E4%BB%B6.png)
我使用 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 签名,然后逐字节比较来找到此类文件。
安装
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
答案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 的文件。
另一个很好的选择是奇考夫卡