查找和替换重复文件是大多数计算机用户的普遍需求。查找和删除重复文件可能是一项繁琐、耗时且劳动密集型的工作。但是,如果您的机器上运行的是GNU/Linux,则借助fdupes工具可以轻松找到重复文件。fdupes-在Linux中查找和删除重复文件什么是fdupes?fdupes是linux下的一个工具。它由AdrianLopez用C语言编写,基于MIT许可证发布。此应用程序可以在指定目录和子目录中查找重复文件。fdupes通过比较文件的MD5签名,逐字节比较文件来识别重复内容。fdupes有多种选项来实现诸如列出、删除和用文件副本的硬链接替换文件等操作。文件比较按照以下顺序开始:大小比较>部分MD5签名比较>完整MD5签名比较>逐字节比较顺序就在眼前。$sudoapt-getinstallfdupes在基于CentOS/RHEL和Fedora的系统上,您需要打开epel存储库来安装fdupes包。#yuminstallfdupes#dnfinstallfdupes[在Fedora22及更高版本上]注意:从Fedora22开始,默认包管理器yum已被dnf取代。fdupes命令的使用方法1.为了演示的目的,让我们在某个目录(例如tecmint)中创建一些重复的文件,命令如下:$mkdir/home/"$USER"/Desktop/tecmint&&cd/home/"$USER"/Desktop/tecmint&&foriin{1..15};doecho“我喜欢Tecmint。Tecmint是一个非常好的Linux用户社区。”>tecmint${i}.txt;done执行完上面的命令最后,让我们使用ls命令验证是否创建了重复文件。$ls-ltotal60-rw-r--r--1tecminttecmint65Aug811:22tecmint10.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint11.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint12.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint13.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint14.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint15.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint1.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint2.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint3.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint4.txt-rw-r--1tecminttecmint65Aug811:22tecmint5.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint6.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint7.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint8.txt-rw-r--r--1tecminttecmint65Aug811:22tecmint9.txt上面的脚本创建了15个名为tecmint1.txt、tecmint2.txt...tecmint15.txt的文件,以及数据阶段同样,例如:“我喜欢Tecmint。Tecmint是一个非常好的Linux用户社区。”2.现在在tecmint文件夹中搜索重复文件$fdupes/home/$USER/Desktop/tecmint/home/tecmint/Desktop/tecmint/tecmint13.txt/home/tecmint/Desktop/tecmint/tecmint8.txt/home/tecmint/Desktop/tecmint/tecmint11.txt/home/tecmint/Desktop/tecmint/tecmint3.txt/home/tecmint/Desktop/tecmint/tecmint4.txt/home/tecmint/Desktop/tecmint/tecmint6.txt/home/tecmint/Desktop/tecmint/tecmint7.txt/home/tecmint/Desktop/tecmint/tecmint9.txt/home/tecmint/Desktop/tecmint/tecmint10。txt/home/tecmint/Desktop/tecmint/tecmint2.txt/home/tecmint/Desktop/tecmint/tecmint5.txt/home/tecmint/Desktop/tecmint/tecmint14.txt/home/tecmint/Desktop/tecmint/tecmint1.txt/home/tecmint/Desktop/tecmint/tecmint15.txt/home/tecmint/Desktop/tecmint/tecmint12.txt3.使用-r选项递归搜索每个目录(包括其子目录)中的重复文件。它递归地搜索所有文件和文件夹,并需要一段时间来扫描重复文件,具体取决于文件和文件夹的数量。在此期间,整个过程将显示在终端中,如下所示。$fdupes-r/homeProgress[37780/54747]69%4.使用-S选项查看某个文件夹中发现的重复文件的大小。$fdupes-S/home/$USER/Desktop/tecmint65字节每个:/home/tecmint/Desktop/tecmint/tecmint13.txt/home/tecmint/Desktop/tecmint/tecmint8.txt/home/tecmint/Desktop/tecmint/tecmint11.txt/home/tecmint/Desktop/tecmint/tecmint3.txt/home/tecmint/Desktop/tecmint/tecmint4.txt/home/tecmint/Desktop/tecmint/tecmint6.txt/home/tecmint/Desktop/tecmint/tecmint7.txt/home/tecmint/Desktop/tecmint/tecmint9.txt/home/tecmint/Desktop/tecmint/tecmint10.txt/home/tecmint/Desktop/tecmint/tecmint2.txt/home/tecmint/Desktop/tecmint/tecmint5.txt/home/tecmint/Desktop/tecmint/tecmint14.txt/home/tecmint/Desktop/tecmint/tecmint1.txt/home/tecmint/Desktop/tecmint/tecmint15.txt/home/tecmint/Desktop/tecmint/tecmint12.txt5,你可以同时使用-S和-r选项查看所有涉及的目录和子目录中重复文件的大小,如下:$fdupes-Sr/home/avi/Desktop/65byteseach:/home/tecmint/Desktop/tecmint/tecmint13.txt/home/tecmint/Desktop/tecmint/tecmint8.txt/home/tecmint/Desktop/tecmint/tecmint11.txt/home/tecmint/Desktop/tecmint/tecmint3.txt/home/tecmint/Desktop/tecmint/tecmint4.txt/home/tecmint/Desktop/tecmint/tecmint6.txt/home/tecmint/Desktop/tecmint/tecmint7.txt/home/tecmint/Desktop/tecmint/tecmint9.txt/home/tecmint/Desktop/tecmint/tecmint10.txt/home/tecmint/Desktop/tecmint/tecmint2.txt/home/tecmint/Desktop/tecmint/tecmint5.txt/home/tecmint/Desktop/tecmint/tecmint14.txt/home/tecmint/Desktop/tecmint/tecmint1.txt/home/tecmint/Desktop/tecmint/tecmint15.txt/home/tecmint/Desktop/tecmint/tecmint12.txt107字节每个:/home/tecmint/Desktop/resume_files/r-csc.html/home/tecmint/Desktop/resume_files/fc.html#p#6。您可以选择在两个文件夹中有选择地搜索,而不是在一个或所有文件夹中递归搜索。无需提醒您在一个或三个文件夹中搜索,必要时可以使用-S和/或-r选项。$fdupes/home/avi/Desktop//home/avi/Templates/7.要在保留副本的同时删除重复文件,可以使用-d选项。您必须格外小心使用此选项,否则最终结果可能是文件/数据丢失。郑重提醒,该操作不可撤销。$fdupes-d/home/$USER/Desktop/tecmint[1]/home/tecmint/Desktop/tecmint/tecmint13.txt[2]/home/tecmint/Desktop/tecmint/tecmint8.txt[3]/home/tecmint/Desktop/tecmint/tecmint11.txt[4]/home/tecmint/Desktop/tecmint/tecmint3.txt[5]/home/tecmint/Desktop/tecmint/tecmint4.txt[6]/home/tecmint/Desktop/tecmint/tecmint6.txt[7]/home/tecmint/Desktop/tecmint/tecmint7.txt[8]/home/tecmint/Desktop/tecmint/tecmint9.txt[9]/home/tecmint/Desktop/tecmint/tecmint10.txt[10]/home/tecmint/Desktop/tecmint/tecmint2.txt[11]/home/tecmint/Desktop/tecmint/tecmint5.txt[12]/home/tecmint/Desktop/tecmint/tecmint14.txt[13]/home/tecmint/Desktop/tecmint/tecmint1.txt[14]/home/tecmint/Desktop/tecmint/tecmint15.txt[15]/home/tecmint/Desktop/tecmint/tecmint12.txtSet1of1,preservefiles[1-15,all]:大家可能注意到了,所有重复的文件都列出来了,并给出删除提示,一个一个删除,或者指定一个范围,或者一次性全部删除。您可以选择一个范围,如下所示,以删除指定范围内的文件。设置1个,共1个,保留文件[1-15,全部]:2-15[-]/home/tecmint/Desktop/tecmint/tecmint13.txt[+]/home/tecmint/Desktop/tecmint/tecmint8.txt[-]/home/tecmint/Desktop/tecmint/tecmint11.txt[-]/home/tecmint/Desktop/tecmint/tecmint3.txt[-]/home/tecmint/Desktop/tecmint/tecmint4.txt[-]/home/tecmint/Desktop/tecmint/tecmint6.txt[-]/home/tecmint/Desktop/tecmint/tecmint7.txt[-]/home/tecmint/Desktop/tecmint/tecmint9.txt[-]/home/tecmint/Desktop/tecmint/tecmint10.txt[-]/home/tecmint/Desktop/tecmint/tecmint2.txt[-]/home/tecmint/Desktop/tecmint/tecmint5.txt[-]/home/tecmint/Desktop/tecmint/tecmint14.txt[-]/home/tecmint/Desktop/tecmint/tecmint1.txt[-]/home/tecmint/Desktop/tecmint/tecmint15.txt[-]/home/tecmint/Desktop/tecmint/tecmint12.txt8。从安全的角度来看,您可能希望将fdupes的输出打印到一个文件中,然后检查该文本文件以确定要删除哪些文件。这降低了意外删除文件的风险。您可以这样做:$fdupes-Sr/home>/home/fdupes.txt注意:您应该将/home替换为您想要的文件夹。另外,如果要递归搜索并打印大小,可以使用-r和-S选项。9.可以使用-f选项忽略每个匹配集中的***文件。该目录中的文件首先列出。$ls-l/home/$USER/Desktop/tecminttotal20-rw-r--r--1tecminttecmint65Aug811:22tecmint9(3rdcopy).txt-rw-r--r--1tecminttecmint65Aug811:22tecmint9(第4个副本).txt-rw-r--r--1tecminttecmint65Aug811:22tecmint9(另一个副本).txt-rw-r--r--1tecminttecmint65Aug811:22tecmint9(copy).txt-rw-r--r--1tecminttecmint65Aug811:22tecmint9.txt然后,忽略每个匹配集中的***文件。$fdupes-f/home/$USER/Desktop/tecmint/home/tecmint/Desktop/tecmint9(副本).txt/home/tecmint/Desktop/tecmint9(第三副本).txt/home/tecmint/Desktop/tecmint9(另一个copy).txt/home/tecmint/Desktop/tecmint9(第4副本).txt10。检查安装的fdupes版本。$fdupes--versionfdupes1.5111。如果您需要有关fdupes的帮助,可以使用-h开关。$fdupes-hUsage:fdupes[options]DIRECTORY...-r--recurse对于给定的每个目录跟随在-R中遇到的子目录--recurse:对于在此选项之后给出的每个目录跟随在其中遇到的子目录(注意':'在选项的末尾,有关更多详细信息的联机帮助页)-s--symlinks通常遵循符号链接-H--hardlinks,当两个或多个文件指向同一磁盘区域时,它们将被视为非重复;此选项将更改此行为-n--noempty从考虑中排除零长度文件-A--nohidden从考虑中排除隐藏文件-f--omitfirst省略每组匹配中的第一个文件-1--sameline列出每组一行上的匹配项-S--size显示重复文件的大小-m--summarize总结重复信息-q--quiet隐藏进度indicator-d--delete提示用户输入文件以保留并删除所有其他文件;重要:在特定情况下,将此选项与-s或--symlinks一起使用时,或者多次指定特定目录时,数据可能会丢失;有关其他信息,请参阅fdupes文档-N--noprompt与--delete一起,保留每组重复项中的第一个文件,并在不提示用户的情况下删除其余文件-v--version显示fdupes版本-h--help显示这就是这条帮助消息的全部内容让我知道您过去是如何在Linux中查找和删除重复文件的?另外,让我知道您对这个工具的看法。在下面的评论部分提供您宝贵的反馈!不要忘记喜欢和分享我们以帮助传播信息!我正在使用另一种工具来删除名为fslint的重复文件。我很快就会和你分享我的经验,你一定会喜欢的。
