当前位置: 首页 > Linux

如何快速找到系统中的重复文件并释放磁盘空间?

时间:2023-04-06 19:45:39 Linux

不管是Windows电脑还是Linux电脑,在使用的过程中都会或多或少的留下一些重复的文件。这些文件不仅会占用我们的磁盘,还会拖累我们的系统,所以有必要将这些重复的文件清除掉。本文将介绍6种查找系统中重复文件的方法,让你快速释放硬盘空间!1.使用diff命令比较文件在我们的日常操作中,比较两个文件的差异最简单的方法可能就是使用diff命令。diff命令的输出将使用<和>符号显示两个文件之间的差异,使用此功能我们可以找到相同的文件。当两个文件有差异时,diff命令会输出差异点:输出,表示两个文件相同:$diffhome.htmlindex.html$但是,diff命令的缺点是一次只能比较两个文件。如果我们要比较多个文件,两两比较的效率肯定很低。2.使用checksumchecksum命令cksum会将文件内容按照一定的算法计算成一个很长的数字(比如2819078353228029)。虽然计算出来的结果不是绝对唯一,但是由于文件内容不同导致校验和相同的可能性与中国男足进军世界杯的情况类似。$cksum*.html2819078353228029backup.html4073570409227985home.html4073570409227985index.html在我们上面的操作中,我们可以看到第二个和第三个文件的校验和是一样的,所以我们可以认为这两个文件是一样的。3.使用find命令虽然find命令没有查找重复文件的选项,但可以用来按名称或类型搜索文件并运行cksum命令。具体操作如下。$找到。-name"*.html"-execcksum{}\;4073570409227985./home.html2819078353228029./backup.html4073570409227985./index.html4.使用fslint命令fslint命令可以用来专门查找重复文件.但是这里有一个需要注意的地方,那就是我们需要给它一个起始位置。如果我们需要遍历大量文件,该命令可能需要相当长的时间才能完成查找。$fslint.------------------------------------文件名lint------------------------------无效的utf8名称----------------------------------文件大小写lint--------------------------------重复文件<==home.htmlindex.html--------------------------------悬挂链接-------------------链接中的冗余字符------------------------------------可疑链接------------------------------空目录./.gnupg----------------------------------临时文件----------------------重复/冲突的名称-------------------------------------------错误的ID----------------------NonStrippedexecutables提示:我们必须在系统上安装fslint,并且还需要将其添加到搜索路径中:$exportPATH=$PATH:/usr/share/fslint/fslint5。使用rdfind命令rdfind命令还将查找重复(相同内容)的文件。这个命令被称为“冗余数据查找”,可以根据文件日期确定哪些文件是原始文件,这在我们选择删除重复项时很有用,因为它会删除较新的文件。$rdfind~现在扫描“/home/alvin”,发现12个文件。现在总共有12个文件。由于设备和inode不唯一,删除了1个文件。总大小为699498字节或683KiBR由于列表中的大小唯一,删除了9个文件。剩下2个文件。现在根据第一个字节消除候选者:从列表中删除0个文件。剩下2个文件。现在根据最后一个字节消除候选者:从列表中删除0个文件。剩下2个文件。现在根据sha1校验和消除候选者:删除0filesfromlist.2filesleft.Itseemslikeyouhave2filesthatarenotuniqueTotally,223KiBcanbereduced.Nowmakingresultsfileresults.txt我们还可以在dryrun中运行。$rdfind-dryruntrue~(DRYRUNMODE)Nowscanning"/home/alvin",found12files.(DRYRUNMODE)Nowhavetotally12files.(DRYRUNMODE)Removed1filesduetononuniquedeviceandinode.(DRYRUN删除了1个文件MODE)Totalsizeis699352bytesor683KiBRRemoved9filesduetouniquesizesfromlist.2filesleft.(DRYRUNMODE)Noweliminingcandidatesbasedonfirstbytes:removed0filesfromlist.2filesleft.(DRYRUNMODE)现在Eliminatingcandidatesbasedonlastbytes:removed0filesfromlist.2filesleft.(DRYRUNMODE)现在根据sha1校验和消除候选人:removed0filesfromlist.2filesleft.(DRYRUNMODE)看起来你有2个文件notunique(DRYRUNMODE)总共可以减少223KiB。(DRYRUNMODE)现在制作结果文件results.txtrdfind该命令还提供了一些选项,例如忽略空文件(-ignoreempty)和跟随符号链接(-followsymlinks).下面详细解释其常用选项。选项含义-ignoreempty忽略空文件-minsize忽略小于特定大小的文件-followsymlink跟随符号链接-removeidentinode删除引用相同inode的文件-checksum标识要使用的校验和类型-deterministic决定如何对文件进行排序-makesymlinks将重复文件转换为symlinks-makehardlinks用硬链接替换重复文件-makeresultsfile在当前目录中创建结果文件-outputname给出结果文件的名称-deleteduplicates删除/取消链接重复文件-sleep以毫秒为单位设置读取文件之间的休眠时间-n,-dryrun显示应该执行的操作被执行,但不执行它们。这里需要注意,rdfind命令提供了使用-deleteduplicatestrue删除重复文件的选项。顾名思义,使用此选项将自动删除重复文件。$rdfind-deleteduplicatestrue....删除了1个文件。<==当然前提是我们还要在系统上安装rdfind命令。6.使用fdupes命令fdupes命令还可以轻松识别重复文件并提供许多有用的选项。在其最简单的操作中,它将像这样将重复的文件放在一起:$fdupes~/home/alvin/UPGRADE/home/alvin/mytwin/home/alvin/lp.txt/home/alvin/lp。man/home/alvin/penguin.png/home/alvin/penguin0.png/home/alvin/hideme.png-r选项代表递归,意思是它会使用递归的方法在每个目录下查找重复的文件。但是,Linux下有很多重要的重复文件(比如用户的.bashrc和.profile文件),删除它们会导致系统故障。#fdupes-r/home/home/shark/home.html/home/shark/index.html/home/dory/.bashrc/home/eel/.bashrc/home/nemo/.profile/home/dory/.profile/home/shark/.profile/home/nemo/tryme/home/shs/tryme/home/shs/arrow.png/home/shs/PNGs/arrow.png/home/shs/11/files_11.zip/home/shs/ERIC/file_11.zip/home/shs/penguin0.jpg/home/shs/PNGs/penguin.jpg/home/shs/PNGs/penguin0.jpg/home/shs/Sandra_rotated.png/home/shs/PNGs/Sandra_rotated.pngfdupes命令常用选项如下表所示:选项含义-r--recurse递归-R--recurse递归指定目录-s--symlinks-H--hardlinks跟随符号链接目录-H--硬链接硬链接链接为重复链接-n--noempty忽略空文件-f--omitfirst忽略每组匹配中的第一个文件-A--nohidden忽略隐藏文件-1--sameline相同列表匹配单行-S--size显示重复文件的大小-m--summarize汇总重复文件信息-q--quiet进度指示器-d--delete提示用户保存文件-N--noprompt与--delete一起使用时无效,保留第一个在收集一个文件-I--immediate遇到重复项时删除-p--permissions权限不将具有不同所有者/组或权限位的SONCIDER文件视为重复项-o--order=WORD按照规范WORD顺序文件-i--reverse排序时反向逆序-v--version显示fdupes版本-h--help显示帮助摘要Linux系统为我们提供了很多定位和删除重复文件的工具。使用这些工具将快速找到磁盘上的重复文件并将其删除。希望这次分享能给大家带来一些帮助~----------------梁旭,世界500强外企Linux开发工程师,Linux布道者,欢迎关注我的公众号《良序Linux》干货满满!→《技术干货推送》→《独家资讯分享》→《高手如云社区》如果对我的话题内容感兴趣,也可以关注我的博客:lxlinux.net