在编辑或修改它们之前,我总是将配置文件或任何旧文件备份到硬盘中的某个位置,因此如果我不小心做错了什么,我可以从备份中恢复它们。 但问题是我忘了清理这些文件,一段时间后我的硬盘里装满了很多重复的文件。 我要么懒得清理旧文件,要么担心我可能会删除重要文件。 如果您像我一样,在不同的备份目录中存在多个相同文件的副本,您可以使用下面在类 Unix 操作系统中提供的工具查找和删除重复文件。
提醒一句:
删除重复文件时请小心。 如果你不小心,它会导致你 意外数据丢失. 我建议您在使用这些工具时要格外注意。
在 Linux 中查找和删除重复文件
出于本指南的目的,我将讨论三个实用程序,即
- 查找,
- 骗子,
- FSlint。
这三个实用程序是免费的、开源的,适用于大多数类 Unix 操作系统。
1. 查找
查找, 代表 r多余的 d数据 寻找, 是一个免费的开源实用程序,用于在目录和子目录之间和/或内部查找重复文件。 它根据文件的内容而不是文件名来比较文件。 Rdfind 使用 排行 算法对原始文件和重复文件进行分类。 如果您有两个或更多相同的文件,Rdfind 足够聪明,可以找到哪个是原始文件,并将其余文件视为重复文件。 一旦找到重复项,它将向您报告。 您可以决定删除它们或将它们替换为 硬链接 或者 符号(软)链接.
安装 Rdfind
Rdfind 可在 AUR. 因此,您可以使用任何 AUR 帮助程序将它安装在基于 Arch 的系统中,例如 耶 如下所示。
$ yay -S rdfind
在 Debian、Ubuntu、Linux Mint 上:
$ sudo apt-get install rdfind
在 Fedora:
$ sudo dnf install rdfind
在 RHEL、CentOS 上:
$ sudo yum install epel-release
$ sudo yum install rdfind
用法
安装后,只需运行 Rdfind 命令以及目录路径即可扫描重复文件。
$ rdfind ~/Downloads
使用 Rdfind 扫描目录
如上图所示,Rdfind 命令将扫描 ~/Downloads 目录并将结果保存在一个名为 结果.txt 在当前工作目录中。 您可以在 results.txt 文件中查看可能重复文件的名称。
$ cat results.txt # Automatically generated # duptype id depth size device inode priority name DUPTYPE_FIRST_OCCURRENCE 1469 8 9 2050 15864884 1 /home/sk/Downloads/tor-browser_zh/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test5.regex DUPTYPE_WITHIN_SAME_TREE -1469 8 9 2050 15864886 1 /home/sk/Downloads/tor-browser_zh/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test6.regex [...] DUPTYPE_FIRST_OCCURRENCE 13 0 403635 2050 15740257 1 /home/sk/Downloads/Hyperledger(1).pdf DUPTYPE_WITHIN_SAME_TREE -13 0 403635 2050 15741071 1 /home/sk/Downloads/Hyperledger.pdf # end of file
通过查看 results.txt 文件,您可以轻松找到重复项。 如果需要,您可以手动删除重复项。
此外,您还可以 -干运行 在不更改任何内容的情况下查找给定目录中的所有重复项并在终端中输出摘要的选项:
$ rdfind -dryrun true ~/Downloads
找到重复项后,您可以用硬链接或符号链接替换它们。
要使用硬链接替换所有重复项,请运行:
$ rdfind -makehardlinks true ~/Downloads
要使用符号链接/软链接替换所有重复项,请运行:
$ rdfind -makesymlinks true ~/Downloads
您可能在目录中有一些空文件并希望忽略它们。 如果是这样,请使用 -忽略空 选项如下。
$ rdfind -ignoreempty true ~/Downloads
如果您不再需要旧文件,只需删除重复文件,而不是用硬链接或软链接替换它们。
要删除所有重复项,只需运行:
$ rdfind -deleteduplicates true ~/Downloads
如果您不想忽略空文件并将它们与所有重复项一起删除,请运行:
$ rdfind -deleteduplicates true -ignoreempty false ~/Downloads
有关详细信息,请参阅帮助部分:
$ rdfind --help
并且,手册页:
$ man rdfind
建议阅读:
- 使用 Duplicate Files Fixer 从您的 Android 中删除重复文件
2. Fdupes
复制品 是另一个命令行实用程序,用于识别和删除指定目录和子目录中的重复文件。 它是免费的开源实用程序,用 C 编程语言。 Fdupes 通过比较文件大小、部分 MD5 签名、完整 MD5 签名来识别重复项,最后进行逐字节比较进行验证。
与 Rdfind 实用程序类似,Fdupes 提供了相当多的选项来执行操作,例如:
- 递归搜索目录和子目录中的重复文件
- 排除空文件和隐藏文件
- 显示重复项的大小
- 遇到重复项立即删除
- 将具有不同所有者/组或权限位的文件排除为重复项
- 还有更多。
安装 Fdupes
Fdupes 在大多数 Linux 发行版的默认存储库中都可用。
在 Arch Linux 及其变体(如 Antergos、Manjaro Linux)上,使用 Pacman 安装它,如下所示。
$ sudo pacman -S fdupes
在 Debian、Ubuntu、Linux Mint 上:
$ sudo apt-get install fdupes
在 Fedora:
$ sudo dnf install fdupes
在 RHEL、CentOS 上:
$ sudo yum install epel-release
$ sudo yum install fdupes
用法
Fdupes 的使用非常简单。 只需运行以下命令即可找出目录中的重复文件,对于 example 〜/下载.
$ fdupes ~/Downloads
我的系统的示例输出:
/home/sk/Downloads/Hyperledger.pdf /home/sk/Downloads/Hyperledger(1).pdf
如您所见,我有一个重复的文件 /home/sk/下载/ 目录。 它仅显示父目录中的重复项。 如何查看子目录中的重复项? 只需使用 -r 选项如下。
$ fdupes -r ~/Downloads
现在您将看到来自 /home/sk/下载/ 目录及其子目录。
Fdupes 还可以同时从多个目录中查找重复项。
$ fdupes ~/Downloads ~/Documents/ostechnix
您甚至可以搜索多个目录,其中一个递归如下:
$ fdupes ~/Downloads -r ~/Documents/ostechnix
上述命令在“~/Downloads”目录和“~/Documents/ostechnix”目录及其子目录中搜索重复项。
有时,您可能想知道目录中重复项的大小。 如果是这样,请使用 -S 选项如下。
$ fdupes -S ~/Downloads 403635 bytes each: /home/sk/Downloads/Hyperledger.pdf /home/sk/Downloads/Hyperledger(1).pdf
同样,要查看父目录和子目录中重复项的大小,请使用 -锶 选项。
我们可以使用排除空文件和隐藏文件 -n 和 -一种 分别。
$ fdupes -n ~/Downloads
$ fdupes -A ~/Downloads
第一个命令将排除零长度文件,后者将在指定目录中搜索重复项时排除隐藏文件。
要汇总重复文件信息,请使用 -m 选项。
$ fdupes -m ~/Downloads 1 duplicate files (in 1 sets), occupying 403.6 kilobytes
要删除所有重复项,请使用 -d 选项。
$ fdupes -d ~/Downloads
样本输出:
[1] /home/sk/Downloads/Hyperledger Fabric Installation.pdf [2] /home/sk/Downloads/Hyperledger Fabric Installation(1).pdf Set 1 of 1, preserve files [1 - 2, all]:
此命令将提示您输入文件以保留和删除所有其他重复项。 只需输入任意数字即可保留对应的文件并删除剩余的文件。 使用此选项时要多加注意。 如果您不小心,您可能会删除原始文件。
如果要保留每组重复项中的第一个文件并删除其他文件而不每次都提示,请使用 -dN 选项(不推荐)。
$ fdupes -dN ~/Downloads
要删除遇到的重复项,请使用 -一世 旗帜。
$ fdupes -I ~/Downloads
有关 Fdupes 的更多详细信息,请查看帮助部分和手册页。
$ fdupes --help
$ man fdupes
- 重复照片修复程序:组织好您的照片库
3.FSlint
FSlint 是另一个重复文件查找实用程序,我不时使用它来删除不必要的重复文件并释放我的 Linux 系统中的磁盘空间。 与其他两个实用程序不同,FSlint 具有 GUI 和 CLI 模式。 因此,对于新手来说,它是更加用户友好的工具。 FSlint 不仅可以找到重复项,还可以找到错误的符号链接、错误的名称、临时文件、错误的 IDS、空目录和未剥离的二进制文件等。
安装 FSlint
FSlint 可用于 AUR,因此您可以使用任何 AUR 助手安装它。
$ yay -S fslint
在 Debian、Ubuntu、Linux Mint 上:
$ sudo apt-get install fslint
在 Fedora:
$ sudo dnf install fslint
在 RHEL、CentOS 上:
$ sudo yum install epel-release
$ sudo yum install fslint
安装后,从菜单或应用程序启动器启动它。
这就是 FSlint GUI 的样子。
FSlint 接口
如您所见,FSlint 的界面是用户友好且不言自明的。 在里面 搜索路径 选项卡,添加要扫描的目录的路径,然后单击 寻找 左下角的按钮以查找重复项。 检查递归选项以递归搜索目录和子目录中的重复项。 FSlint 将快速扫描给定的目录并列出它们。
fslint 图形用户界面
从列表中,选择要清理的重复项,然后选择其中任何一个给定操作,例如 Save、删除、合并和符号链接。
在里面 高级搜索参数 选项卡,您可以在搜索重复项时指定要排除的路径。
fslint 高级搜索
FSlint 命令行选项
FSlint 提供了以下 CLI 实用程序的集合来查找文件系统中的重复项:
- 找出 — 查找重复文件
- 查找 — 查找 Name Lint(文件名问题)
- 查找8 — 查找具有无效 utf8 编码的文件名
- 查找 –查找坏链接(符号链接的各种问题)
- 发现 — 查找同名(名称冲突的问题)
- 找到 — 查找空目录
- 发现者 — 查找用户 ID 失效的文件
- 发现者 — 查找非剥离的可执行文件
- 发现者 — 查找文件中的冗余空白
- 查找 — 查找临时文件
- 发现 — 查找可能未使用的库
- 压缩目录 — 回收 ext2 目录条目中浪费的空间
所有这些实用程序都可以在 /usr/share/fslint/fslint/fslint 地点。
为了 example,要在给定目录中查找重复项,请执行以下操作:
$ /usr/share/fslint/fslint/findup ~/Downloads/
同样,要查找空目录,命令将是:
$ /usr/share/fslint/fslint/finded ~/Downloads/
要获取有关每个实用程序的更多详细信息,请 example 找出, 跑:
$ /usr/share/fslint/fslint/findup --help
有关 FSlint 的更多详细信息,请参阅帮助部分和手册页。
$ /usr/share/fslint/fslint/fslint --help
$ man fslint
结论
您现在知道了三种在 Linux 中查找和删除不需要的重复文件的工具。 在这三个工具中,我经常使用 Rdfind。 这并不意味着其他两个实用程序效率不高,但到目前为止我对 Rdfind 很满意。 嗯,轮到你了。 你最喜欢哪个工具,为什么? 在下面的评论部分让我们知道他们。
资源:
感谢您的光临!
帮助我们帮助您:
- 订阅我们的电子邮件通讯: 立即注册
- 支持 OSTechNix: 通过贝宝捐款
- 下载免费的电子书和视频: TradePub 上的 OSTechNix
- 联系我们: 红迪网 | Facebook | Twitter | 领英 | RSS订阅
祝你有美好的一天!!