在 Linux 中查找和删除重复文件的 5 个最佳工具
如果您习惯使用下载管理器从互联网上下载各种内容,那么组织您的主目录甚至系统可能会特别困难。
你可能经常会发现你下载了相同的 mp3、pdf 和 epub(以及各种其他文件扩展名)并将其复制到不同的目录。这可能会导致你的目录变得杂乱无章,充斥着各种无用的重复内容。
在本教程中,您将学习如何使用rdfind、fdupes和rmlint命令行工具以及名为DupeGuru和FSlint的 GUI 工具在 Linux 中查找和删除重复文件。
需要注意的是,删除系统上的内容时一定要小心,因为这可能会导致不必要的数据丢失。如果您使用的是新工具,请先在测试目录中试用,因为删除文件不会有问题。
1. Rdfind - 在 Linux 中查找重复文件
Rdfind源自冗余数据查找,这是一款免费的命令行工具,用于在多个目录之间或目录内查找重复文件。它会递归扫描目录并识别具有相同内容的文件,以便您采取适当的操作,例如删除或移动重复文件。
Rdfind使用一种算法对文件进行分类,并检测哪些重复文件是原始文件,并将其余文件视为重复文件。
排名规则如下:
- 如果在扫描输入参数时先于B发现A,则A 的排名更高。
- 如果A 的深度低于B,则A 的排名更高。
- 如果A比B更早被发现,则A 的排名更高。
最后一条规则特别适用于在同一目录中发现两个文件的情况。
在 Linux 上安装 Rdfind
要在 Linux 中安装rdfind,请根据您的 Linux 发行版使用以下命令。
$ sudo apt install rdfind [On Debian, Ubuntu and Mint] $ sudo yum install rdfind [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a sys-apps/rdfind [On Gentoo Linux] $ sudo apk add rdfind [On Alpine Linux] $ sudo pacman -S rdfind [On Arch Linux] $ sudo zypper install rdfind [On OpenSUSE]
要在目录上运行rdfind,只需输入rdfind和目标目录。
$ rdfind /home/user
如您所见,rdfind会将结果保存在名为results.txt的文件中,该文件位于您运行程序的同一目录中。该文件包含 rdfind 找到的所有重复文件。您可以查看该文件并手动删除重复文件(如果您愿意)。
您可以做的另一件事是使用一个-dryrun
选项,该选项将提供重复项列表而不采取任何操作:
$ rdfind -dryrun true /home/user
当找到重复项时,您可以选择用硬链接替换它们。
$ rdfind -makehardlinks true /home/user
如果您希望删除重复项,可以运行。
$ rdfind -deleteduplicates true /home/user
要检查rdfind的其他有用选项,您可以使用rdfind手册。
$ man rdfind
2. Fdupes – 在 Linux 中扫描重复文件
Fdupes是另一个命令行程序,可让您识别系统中的重复文件。它以递归方式搜索目录,比较文件大小和内容以识别重复项。
它使用以下方法来确定重复文件:
- 比较部分 md5sum 签名
- 比较完整的 md5sum 签名
- 逐字节比较验证
与 rdfind一样,它有类似的选项:
- 递归搜索
- 排除空文件
- 显示重复文件的大小
- 立即删除重复项
- 排除不同所有者的文件
在 Linux 中安装 Fdupes
要在 Linux 中安装fdupes,请根据您的 Linux 发行版使用以下命令。
$ sudo apt install fdupes [On Debian, Ubuntu and Mint] $ sudo yum install fdupes [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a sys-apps/fdupes [On Gentoo Linux] $ sudo apk add fdupes [On Alpine Linux] $ sudo pacman -S fdupes [On Arch Linux] $ sudo zypper install fdupes [On OpenSUSE]
Fdupes语法与rdfind类似。只需输入命令,然后输入要扫描的目录即可。
$ fdupes <dir>
要递归搜索文件,您必须指定-r
这样的选项。
$ fdupes -r <dir>
您还可以指定多个目录并指定要递归搜索的目录。
$ fdupes <dir1> -r <dir2>
要让 fdupes 计算重复文件的大小,请使用该-S
选项。
$ fdupes -S <dir>
要收集有关找到的文件的摘要信息,请使用该-m
选项。
$ fdupes -m <dir>
最后,如果您想删除所有重复项,请使用-d
这样的选项。
$ fdupes -d <dir>
Fdupes将询问要删除哪个找到的文件。您需要输入文件编号:
绝对不推荐的解决方案是使用-N
仅保留第一个文件的选项。
$ fdupes -dN <dir>
要获取可与fdupes一起使用的选项列表,请通过运行查看帮助页面。
$ fdupes -help
3. Rmlint – 删除重复文件
Rmlint是一个命令行工具,用于在 Linux 系统中查找和删除重复和类似 lint 的文件。它有助于识别具有相同内容的文件以及各种形式的冗余或 lint,例如空文件、损坏的符号链接和孤立文件。
在 Linux 上安装 Rmlint
要在 Linux 中安装Rmlint,请根据您的 Linux 发行版使用以下命令。
$ sudo apt install rmlint [On Debian, Ubuntu and Mint] $ sudo yum install rmlint [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a sys-apps/rmlint [On Gentoo Linux] $ sudo apk add rmlint [On Alpine Linux] $ sudo pacman -S rmlint [On Arch Linux] $ sudo zypper install rmlint [On OpenSUSE]
4. dupeGuru – 在 Linux 中查找重复文件
dupeGuru是一款开源跨平台工具,可用于在 Linux 系统中查找重复文件。该工具可以扫描一个或多个文件夹中的文件名或内容。它还允许您查找与要搜索的文件相似的文件名。
dupeGuru有适用于 Windows、Mac 和 Linux 平台的不同版本。其快速模糊匹配算法功能可帮助您在一分钟内找到重复文件。它是可自定义的,您可以提取所需的精确重复文件,并从系统中清除不需要的文件。
在 Linux 上安装 dupeGuru
要在 Linux 中安装dupeGuru,请根据您的 Linux 发行版使用以下命令。
$ sudo apt install dupeguru [On Debian, Ubuntu and Mint] $ sudo yum install dupeguru [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a sys-apps/dupeguru [On Gentoo Linux] $ sudo apk add dupeguru [On Alpine Linux] $ sudo pacman -S dupeguru [On Arch Linux] $ sudo zypper install dupeguru [On OpenSUSE]
5. FSlint – Linux 的重复文件查找器
FSlint是一款免费实用程序,用于查找和清理文件系统上的各种形式的 lint。它还会报告重复文件、空目录、临时文件、重复/冲突的(二进制)名称、错误的符号链接等。它具有命令行和 GUI 模式。
然而,值得注意的是,截至我所知的 2022 年 9 月,FSlint上次更新是在 2013 年,可能没有得到积极维护或与较新的 Linux 发行版兼容。
在 Linux 上安装 FSlint
要在 Linux 中安装FSlint,请根据您的 Linux 发行版使用以下命令。
$ sudo apt install fslint [On Debian, Ubuntu and Mint] $ sudo yum install fslint [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a sys-apps/fslint [On Gentoo Linux] $ sudo apk add fslint [On Alpine Linux] $ sudo pacman -S fslint [On Arch Linux] $ sudo zypper install fslint [On OpenSUSE]
结论
这些是查找 Linux 系统上重复文件的非常有用的工具,但是删除此类文件时应该非常小心。
如果您不确定是否需要某个文件,最好在删除之前备份该文件并记住其目录。如果您有任何问题或意见,请在下面的评论部分提交。