教你如何快速在Linux中找到某个目录中最大的文件

举报
wljslmz 发表于 2023/03/21 18:08:18 2023/03/21
【摘要】 工作中经常会有查看某个目录下最大的文件的需求,比如在运维工作中,发现某个系统或功能不工作了,经排查发现是服务器空间满了…那么接下来就需要清理一下临时文件或者日志文件,或者其他不需要的文件,那么就会想要查看一下,在某个目录下,到底哪个文件占用空间最大,也就是需要找出最大的文件(或目录)来。一般来说,可以使用 du,sort 和 head 命令来完成这个工作,比如,在当前目录下查找前20个最大的...

工作中经常会有查看某个目录下最大的文件的需求,比如在运维工作中,发现某个系统或功能不工作了,经排查发现是服务器空间满了…那么接下来就需要清理一下临时文件或者日志文件,或者其他不需要的文件,那么就会想要查看一下,在某个目录下,到底哪个文件占用空间最大,也就是需要找出最大的文件(或目录)来。

一般来说,可以使用 du,sort 和 head 命令来完成这个工作,比如,在当前目录下查找前20个最大的文件夹,可参考如下命令:

du -h | sort -hr | head -n 20

输出:

再比如,在当前目录中查找前20个最大的文件和文件夹,参考如下命令:

du -ah | sort -hr | head -n 20

输出:

接下来我们详细介绍一下。

如何在 Linux 中找出最大的文件夹

du 命令用于获取磁盘使用情况,sort 命令用于根据需求对数据进行排序,head 命令用于显示输入数据的前面部分。

这只是在 Linux 命令行中获取最大文件和目录的一个命令组合,除此以外,也还有其他一些方法来实现相同的效果。首先,假如在没有任何选项的情况下,使用这三个命令会发生什么呢?其输出对你来说可能没有什么实际用处。

当开始运行这些命令的时候,除非使用 du 指定,否则所有操作都是针对当前目录。不带选项的使用 sort 命令,其结果往往会出人意料,比如,100 会被认为小于 12,因为它是按照各个数位上的字符排序的,第一位都是1,100的第二位为0,12的第二位为2,而2>0,所以12会排在100前面。

head 命令默认会显示前 10 个条目,根据你想要分析的目录,可修改其执行参数。

如下所示为不带任何选项的运行示例:

du | sort | head

输出:

回到正题,下面我们看看如何使用合适的选项来达到我们的目的(找到最大的文件)。sort 命令中,-n 选项表示将字段按照数值进行排序,-r 选项表示倒序排序,这通常是我们在使用 sort 命令时所希望的。另外,在 head 中添加 -5 选项,表示查找前 5 个条目(而不是默认的10个),这根据你的具体需求和期望来决定。

然后,重新运行如下:

du | sort -nr | head -5

输出:

这个结果看起来好多了,哪个文件夹最大,一目了然。

du 命令的 -h 选项,可以让列表中文件大小以人类易读的方式显示,如下所示:

du -h | sort -nr | head -5

输出:

另外,sort 命令也有 -h 选项如下所示:

du -h | sort -hr | head -5

输出:

找到最大的文件

我有一个备份数据库的目录,里面存放的都是备份的数据,我想找到最大的备份文件,可以运行以下命令:

du -h | sort -hr | head -5

这个结果表示,当前目录下 . 目录中含有6.0G的文件,但是对于我们找到最大的单个文件,却是没有帮助的。

这需要我们在 du 命令中使用另外一个选项,-a,如下所示:

du -ah | sort -hr | head -5

显然,达到了我们预期的效果。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。