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

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

提醒一句:

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

内容

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

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

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

  1. 查找,
  2. 骗子,
  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 文件,您可以轻松找到重复项。 如果需要,您可以手动删除重复项。

此外,您还可以 -干运行 选择在给定目录中查找所有重复项而不更改任何内容并在终端中输出摘要:

$ 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 的使用非常简单。 只需运行以下命令即可找出目录中的重复文件,例如 〜/下载.

$ 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 助手安装它。

$ 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 的样子。