linux查找文件重复项,Linux中如何使用命令查找重复文件

今天小编要跟大家分享的文章是关于Linux系统中如何使用命令查找重复文件。不管是Windows电脑还是Linux电脑,在使用的过程中,或多或少都会留下很多重复的文件。这些文件不仅会占用我们的磁盘,还会拖累我们的系统,所以,我们需要删除这些重复的文件。今天小编为大家介绍6种方法找到系统里的重复文件,让你快速释放硬盘空间!一起来看一看吧!

1.使用diff命令比较文件

在我们平常操作当中,比较两个文件的差异最简单的方法可能就是使用 diff 命令。diff命令的输出将使用  符号显示两个文件之间的差异,利用这个特性我们可以找到相同的文件。

当两个文件有差异时,diff命令将输出差异点:

$ diff index.html backup.html

2438a2439,2441

 
 

> That's all there is to report.

如果你的diff命令没有输出,则表示两个文件相同:

$ diff home.html index.html

$

但是,diff命令的缺点是它一次只能比较两个文件,如果我们要比较多个文件,这样两个两个比较效率肯定非常低下。

2.使用校验和

校验和命令 cksum 会根据一定的算法将文件的内容计算成一个很长的数字(如2819078353 228029)。虽然算出的结果不是绝对唯一,但是内容不相同的文件导致校验和相同的可能性跟中国男足进世界杯差不多。

$ cksum *.html

2819078353 228029 backup.html

4073570409 227985 home.html

4073570409 227985 index.html

在我们上面的操作中,我们可以看到第二个和第三个文件校验和是相同的,所以我们可以认为这两个文件是一样的。

3.使用find命令

虽然find命令没有查找重复文件的选项,但是它却可用于按名称或类型搜索文件并运行cksum命令。具体操作如下。

$ find . -name "*.html" -exec cksum {} \;

4073570409 227985 ./home.html

2819078353 228029 ./backup.html

4073570409 227985 ./index.html

4.使用fslint命令

fslint 命令可以用来专门查找重复文件。但是这里有个注意事项,就是我们需要给它一个起始位置。如果我们需要运行大量文件,该命令可能需要相当长的时间才能完成查找。

$ fslint .

-----------------------------------file name lint

-------------------------------Invalid utf8 names

-----------------------------------file case lint

----------------------------------DUPlicate files    <==

home.html

index.html

-----------------------------------Dangling links

--------------------redundant characters in links

------------------------------------suspect links

--------------------------------Empty Directories

./.gnupg

----------------------------------Temporary Files

----------------------duplicate/conflicting Names

------------------------------------------Bad ids

-------------------------Non Stripped executables

Tips:我们必须在系统上安装fslint,还需要将它添加到搜索路径中:

$ export PATH=$PATH:/usr/share/fslint/fslint

5.使用rdfind命令

rdfind 命令还将寻找重复的(相同内容的)文件。被称为“冗余数据查找”,该命令可以根据文件日期确定哪些文件是原始文件,这对我们选择删除重复项很有帮助,因为它会删除较新的文件。

$ rdfind ~

Now scanning "/home/alvin", found 12 files.

Now have 12 files in total.

Removed 1 files due to nonunique device and inode.

Total size is 699498 bytes or 683 KiB

Removed 9 files due to unique sizes from list.2 files left.

Now eliminating candidates based on first bytes:removed 0 files from list.2 files left.

Now eliminating candidates based on last bytes:removed 0 files from list.2 files left.

Now eliminating candidates based on sha1 checksum:removed 0 files from list.2 files left.

It seems like you have 2 files that are not unique

Totally, 223 KiB can be reduced.

Now making results file results.txt

我们还可以在dryrun中运行。

$ rdfind -dryrun true ~

(DRYRUN MODE) Now scanning "/home/alvin", found 12 files.

(DRYRUN MODE) Now have 12 files in total.

(DRYRUN MODE) Removed 1 files due to nonunique device and inode.

(DRYRUN MODE) Total size is 699352 bytes or 683 KiB

Removed 9 files due to unique sizes from list.2 files left.

(DRYRUN MODE) Now eliminating candidates based on first bytes:removed 0 files from list.2 files left.

(DRYRUN MODE) Now eliminating candidates based on last bytes:removed 0 files from list.2 files left.

(DRYRUN MODE) Now eliminating candidates based on sha1 checksum:removed 0 files from list.2 files left.

(DRYRUN MODE) It seems like you have 2 files that are not unique

(DRYRUN MODE) Totally, 223 KiB can be reduced.

(DRYRUN MODE) Now making results file results.txt

rdfind命令还提供一些忽略空文件(-ignoreempty)和跟随符号链接(-followsymlinks)之类的选项。下面详细解释它的常用选项。

5bbbe1ba62e55abf0dcb41dbc7a6f6b4.png

这里需要我们注意一下,rdfind命令提供了使用 -deleteduplicates

true 设置删除重复文件的选项。顾名思义,使用这个选项它将自动删重复的文件。

$ rdfind -deleteduplicates true .

...

Deleted 1 files.    <==

当然,前提是我们也必须在系统上安装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.png

fdupes命令的常用选项如下表所示:

5a469f6115df7d92ccae787488f3e29b.png

以上就是小编今天为大家分享的关于Linux系统中如何使用命令查找重复文件的文章,Linux系统为我们提供了很多用于定位和删除重复文件的工具,使用这些工具将快速找到磁盘里的重复文件并删除它们。希望本次分享能给大家带来帮助。想要了解更多Linux相关知识记得关注达内Linux培训官网!

文章来源于良许Linux ,作者良许

【免责声明:本文图片及文字信息均由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值