前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >inux查找系统中重复文件

inux查找系统中重复文件

作者头像
入门笔记
发布2022-06-02 15:00:20
1.9K0
发布2022-06-02 15:00:20
举报
文章被收录于专栏:入门小站

查找和替换重复文件是大多数计算机用户的普遍要求。查找和删除重复文件是一项繁重的工作,需要时间和耐心。如果您的机器由 GNU/Linux 驱动,那么查找重复文件会非常容易,这要归功于 “fdupes” 实用程序。

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

Fdupes是由Adrian LopezC编程语言编写的 Linux 实用程序,在 MIT 许可下发布。该应用程序能够在给定的一组目录和子目录中找到重复的文件。Fdupes 通过比较文件的 MD5 签名然后进行字节到字节的比较来识别重复项。Fdupes 可以传递许多选项来列出、删除和替换带有硬链接的文件到副本。

比较按以下顺序开始:

大小比较>部分 MD5 签名比较>完整 MD5 签名比较>字节到字节比较

在 Linux 上安装 fdupes

代码语言:javascript
复制
> yum install fdupes

1.出于演示目的,让我们在一个目录(比如rumenz)下创建一些重复的文件,如下所示:

代码语言:javascript
复制
$ mkdir /home/rumenz/ && cd /home/rumenz && for i in {1..15}; do echo "rumenz.com" > rumenz${i}.txt ; done

运行上述命令后,让我们验证是否使用[ls 命令]创建了重复文件。

代码语言:javascript
复制
> ls -l

total 60
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz10.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz11.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz12.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz13.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz14.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz15.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz1.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz2.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz3.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz4.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz5.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz6.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz7.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz8.txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz9.txt

上面的脚本创建了15 个文件,即 rumenz1.txt、rumenz2.txt…rumenz15.txt 并且每个文件都包含相同的数据,即,

代码语言:javascript
复制
"rumenz.com"

2.现在在文件夹rumenz中搜索重复文件。

代码语言:javascript
复制
> fdupes /home/rumenz

/home/rumenz/rumenz13.txt
/home/rumenz/rumenz8.txt
/home/rumenz/rumenz11.txt
/home/rumenz/rumenz3.txt
/home/rumenz/rumenz4.txt
/home/rumenz/rumenz6.txt
/home/rumenz/rumenz7.txt
/home/rumenz/rumenz9.txt
/home/rumenz/rumenz10.txt
/home/rumenz/rumenz2.txt
/home/rumenz/rumenz5.txt
/home/rumenz/rumenz14.txt
/home/rumenz/rumenz1.txt
/home/rumenz/rumenz15.txt
/home/rumenz/rumenz12.txt

3.使用-r选项在每个目录下递归搜索重复项,包括其子目录。

它会递归搜索所有文件和文件夹,具体取决于文件和文件夹的数量,扫描重复项需要一些时间。与此同时,你会看到终端的总进度,就像这样。

代码语言:javascript
复制
> fdupes -r /home

Progress [37780/54747] 69%

4.使用-S选项查看在文件夹中找到的重复项的大小。

代码语言:javascript
复制
> fdupes -S /home/rumenz

65 bytes each:                          
/home/rumenz/rumenz13.txt
/home/rumenz/rumenz8.txt
/home/rumenz/rumenz11.txt
/home/rumenz/rumenz3.txt
/home/rumenz/rumenz4.txt
/home/rumenz/rumenz6.txt
/home/rumenz/rumenz7.txt
/home/rumenz/rumenz9.txt
/home/rumenz/rumenz10.txt
/home/rumenz/rumenz2.txt
/home/rumenz/rumenz5.txt
/home/rumenz/rumenz14.txt
/home/rumenz/rumenz1.txt
/home/rumenz/rumenz15.txt
/home/rumenz/rumenz12.txt

5.您可以同时使用-S-r选项查看遇到的每个目录和子目录的重复文件大小,如下所示:

代码语言:javascript
复制
>  fdupes -Sr /home/rumenz

65 bytes each:                          
/home/rumenz/rumenz13.txt
/home/rumenz/rumenz8.txt
/home/rumenz/rumenz11.txt
/home/rumenz/rumenz3.txt
/home/rumenz/rumenz4.txt
/home/rumenz/rumenz6.txt
/home/rumenz/rumenz7.txt
/home/rumenz/rumenz9.txt
/home/rumenz/rumenz10.txt
/home/rumenz/rumenz2.txt
/home/rumenz/rumenz5.txt
/home/rumenz/rumenz14.txt
/home/rumenz/rumenz1.txt
/home/rumenz/rumenz15.txt
/home/rumenz/rumenz12.txt

107 bytes each:
/home/rumenz/resume_files/r-csc.html
/home/rumenz/resume_files/fc.html

6.除了递归搜索一个文件夹或所有文件夹外,您还可以根据需要选择两个文件夹或三个文件夹。更不用说您可以根据需要使用选项-S和 / 或-r

代码语言:javascript
复制
> fdupes /home/rumenz/ /home/deploy/

7.要在保留副本的同时删除重复文件,您可以使用选项'-d'。使用此选项时应格外小心,否则您最终可能会丢失必要的文件 / 数据,并注意该过程不可恢复。

代码语言:javascript
复制
$ fdupes -d /home/rumenz

[1] /home/rumenz/rumenz13.txt
[2] /home/rumenz/rumenz8.txt
[3] /home/rumenz/rumenz11.txt
[4] /home/rumenz/rumenz3.txt
[5] /home/rumenz/rumenz4.txt
[6] /home/rumenz/rumenz6.txt
[7] /home/rumenz/rumenz7.txt
[8] /home/rumenz/rumenz9.txt
[9] /home/rumenz/rumenz10.txt
[10] /home/rumenz/rumenz2.txt
[11] /home/rumenz/rumenz5.txt
[12] /home/rumenz/rumenz14.txt
[13] /home/rumenz/rumenz1.txt
[14] /home/rumenz/rumenz15.txt
[15] /home/rumenz/rumenz12.txt

Set 1 of 1, preserve files [1 - 15, all]:

您可能会注意到,所有重复项都已列出,系统会提示您删除,要么一一删除,要么删除某个范围,要么一次性全部删除。您可以选择如下所示的范围来删除特定范围的文件文件。

代码语言:javascript
复制
Set 1 of 1, preserve files [1 - 15, all]: 2-15

   [-] /home/rumenz/rumenz13.txt
   [+] /home/rumenz/rumenz8.txt
   [-] /home/rumenz/rumenz11.txt
   [-] /home/rumenz/rumenz3.txt
   [-] /home/rumenz/rumenz4.txt
   [-] /home/rumenz/rumenz6.txt
   [-] /home/rumenz/rumenz7.txt
   [-] /home/rumenz/rumenz9.txt
   [-] /home/rumenz/rumenz10.txt
   [-] /home/rumenz/rumenz2.txt
   [-] /home/rumenz/rumenz5.txt
   [-] /home/rumenz/rumenz14.txt
   [-] /home/rumenz/rumenz1.txt
   [-] /home/rumenz/rumenz15.txt
   [-] /home/rumenz/rumenz12.txt

8.从安全的角度来看,您可能希望将'fdupes'的输出打印到文件,然后检查文本文件以决定删除哪个文件。这减少了意外删除文件的机会。你可以这样做:

代码语言:javascript
复制
> fdupes -Sr /home > /home/fdupes.txt

注意:您可以将“/home”替换为您想要的文件夹。如果要分别递归搜索和打印大小,也可以使用选项'-r''-S'

9.您可以使用选项'-f'省略每组匹配中的第一个文件。

代码语言:javascript
复制
> ls -l /home/rumenz

total 20
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz9 (3rd copy).txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz9 (4th copy).txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz9 (another copy).txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz9 (copy).txt
-rw-r--r-- 1 rumenz rumenz 65 Aug  8 11:22 rumenz9.txt

然后从每组匹配项中省略第一个文件。

代码语言:javascript
复制
> fdupes -f /home/rumenz

/home/rumenz/rumenz9 (copy).txt
/home/rumenz/rumenz9 (3rd copy).txt
/home/rumenz/rumenz9 (another copy).txt
/home/rumenz/rumenz9 (4th copy).txt

10.检查已安装的 fdupes 版本。

代码语言:javascript
复制
> fdupes --version

fdupes 1.51
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Fdupes - 在 Linux 中查找和删除重复文件
  • 1.出于演示目的,让我们在一个目录(比如rumenz)下创建一些重复的文件,如下所示:
  • 2.现在在文件夹rumenz中搜索重复文件。
  • 3.使用-r选项在每个目录下递归搜索重复项,包括其子目录。
  • 4.使用-S选项查看在文件夹中找到的重复项的大小。
  • 5.您可以同时使用-S和-r选项查看遇到的每个目录和子目录的重复文件大小,如下所示:
  • 6.除了递归搜索一个文件夹或所有文件夹外,您还可以根据需要选择两个文件夹或三个文件夹。更不用说您可以根据需要使用选项-S和 / 或-r。
  • 7.要在保留副本的同时删除重复文件,您可以使用选项'-d'。使用此选项时应格外小心,否则您最终可能会丢失必要的文件 / 数据,并注意该过程不可恢复。
  • 8.从安全的角度来看,您可能希望将'fdupes'的输出打印到文件,然后检查文本文件以决定删除哪个文件。这减少了意外删除文件的机会。你可以这样做:
  • 9.您可以使用选项'-f'省略每组匹配中的第一个文件。
  • 10.检查已安装的 fdupes 版本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档