怎样在 Linux 中查找和删除重复文件

在编辑或修改它们之前,我总是将配置文件或任何旧文件备份到硬盘中的某个位置,因此如果我不小心做错了什么,我可以从备份中恢复它们。 但问题是我忘记清理这些文件,一段时间后我的硬盘充满了大量重复文件。 我觉得要么懒得清理旧文件,要么担心我可能会删除重要文件。 如果您像我一样在不同的备份目录中拥有多个相同文件的副本,您可以在类 Unix 操作系统中使用下面给出的工具查找和删除重复文件。

提醒一句:

删除重复文件时请小心。 如果你不小心,它会导致你 意外数据丢失. 我建议您在使用这些工具时要格外注意。

内容

  1. 在 Linux 中查找和删除重复文件
    1. 1. 查找
    2. 2. Fdupes
    3. 3. FSlint
    4. 结论
    5. 帮助我们帮助您:

在 Linux 中查找和删除重复文件

出于本指南的目的,我将讨论三个实用程序,即,

  1. 发现,
  2. Fdupes,
  3. FSlint。

这三个实用程序是免费的、开源的,可在大多数类 Unix 操作系统上运行。

1. 查找

发现, 代表 r他们吃 d他们 寻找, 是一个免费的开源实用程序,用于在目录和子目录之间和/或内查找重复文件。 它根据文件的内容而不是文件名来比较文件。 Rdfind 使用 排行 对原始文件和重复文件进行分类的算法。 如果您有两个或更多相同的文件,Rdfind 足够聪明,可以找到哪个是原始文件,并将其余文件视为重复文件。 一旦发现重复项,它就会向您报告。 您可以决定删除它们或替换它们 硬链接 或者 符号(软)链接.

安装 Rdfind

Rdfind 可在 金子. 因此,您可以使用任何 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_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test5.regex
DUPTYPE_WITHIN_SAME_TREE -1469 8 9 2050 15864886 1 /home/sk/Downloads/tor-browser_en-US/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 文件,您可以轻松找到重复项。 如果需要,您可以手动删除重复项。

另外,你可以 -dryrun 在不更改任何内容的情况下查找给定目录中的所有重复项并在终端中输出摘要的选项:

$ 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

建议阅读:

  • 使用重复文件修复程序从您的 Android 中删除重复文件

2. Fdupes

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

同样,要查看父目录和子目录中重复项的大小,请使用 -Sr 选项。

我们可以使用排除空文件和隐藏文件 -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 助手安装它。

$ 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 将快速扫描给定的目录并列出它们。

2

fslint GUI

从列表中,选择您要清理的重复项,然后选择其中的任何一项进行操作,例如 Save、删除、合并和符号链接。

在里面 高级搜索参数 选项卡,您可以指定搜索重复项时要排除的路径。

弗林特 3

fslint 高级搜索

FSlint 命令行选项

FSlint 提供了以下 CLI 实用程序的集合来查找文件系统中的重复项:

  • 找出 — 查找重复文件
  • 查找 — 查找 Name Lint(文件名问题)
  • findu8 — 查找具有无效 utf8 编码的文件名
  • 查找表 — 找到坏链接(符号链接的各种问题)
  • 发现 — 查找同名(名称冲突的问题)
  • 发现 — 查找空目录
  • 查找 ID — 查找具有死用户 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 感到满意。 嗯,轮到你了。 你最喜欢哪个工具,为什么? 在下面的评测部分让我们知道他们。

资源:

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!