Linux 查找大文件与目录

随着时间的推移,您的磁盘驱动器可能会被大文件占用大量磁盘空间,不必要文件弄得乱七八糟

Linux 查找大文件与目录

Linux 查找大文件与目录

随着时间的推移,您的磁盘驱动器可能会被大文件占用大量磁盘空间,不必要文件弄得乱七八糟。

通常是因为大型日志文件或备份文件,导致你的 Linux 系统的磁盘空间不足。在本教程将说明如何在 Linux 使用 find[du](https://www.myfreax.com/du-command-in-linux/)命令搜索大文件和目录。

通常 find 命令常用于文件的查找,du 命令用于对目录占用磁盘空间进行统计。我们还使用 sort 命令对文件进行排序,使用 head 命令获取指定数量的输出。

find 命令查找大文件#

find 命令是 Linux 系统管理员工具库中最强大的工具之一。它允许您根据不同的指标搜索文件和目录,可以是文件大小或者文件的类型。

[find](https://www.myfreax.com/how-to-use-the-find-command-to-search-for-files/) 命令带有许多强大的选项。例如,您可以搜索超过多少天的大文件,具有指定扩展名的大文件或属于指定用户的大文件。

[find](https://www.myfreax.com/how-to-use-the-find-command-to-search-for-files/) 命令还可以与其他命令组合使用,例如组合使用 sort 命令搜索的文件执行排序。

例如命令 sudo find . -xdev -type f -size +100M 将会在当前目录搜索超过 100MB 文件。

. 代表当前目录。如要搜索其它目录替换,请将. 为指定为你要搜索目录的路径。输出将显示的文件列表,不会包含其它信息。

sudo find . -xdev -type f -size +100M
/var/lib/libvirt/images/centos-7-desktop_default.img
/var/lib/libvirt/images/bionic64_default.img
/var/lib/libvirt/images/win10.qcow2
/var/lib/libvirt/images/debian-9_default.img
/var/lib/libvirt/images/ubuntu-18-04-desktop_default.img
/var/lib/libvirt/images/centos-7_default.img

在下面的示例中,我们将会使用 find 命令在当前目录中搜索大于 100M 的文件。然后通过管道将 find 命令标准输出传递到 ls 命令。

ls 将打印已找到的每个文件的大小,最后通过管道将 ls 命令的标准输出传递给 sort 命令,根据文件大小对其进行排序,使最大文件排在前面。

如果输出包含大量信息,您还可以使用 head 命令仅打印指定的行数,head 命令将会仅标准最前面的几行。

find . -xdev -type f -size +100M -print | xargs ls -lh | sort -k5,5 -h -r

find . -xdev -type f -size +100M -print | xargs ls -lh | sort -k5,5 -h -r | head
-rw-------  1 root   root 40967M Jan  5 14:12 /var/lib/libvirt/images/win10.qcow2

这里解释一下命令含义,find . -xdev -type f -size +100M -print 仅搜索当前目录. 大于 100MB-size +100M 的文件 -type f,不搜索目录 -xdev 并打印完整文件名称 -print 到标准输出。

find 命令的标准输出通过管道传递到 xargsxargs 运行命令 ls -lh 并将 find 命令的标准输入作为参数传递给 ls -lh 命令,ls -lh 命令将以长列表友好的格式打印到标准输出。

sort -k5,5 -h -r 基于 ls -lh 命令的标准输出第 5 列 -k5,5 进行排序,由于 sort 命令默认是从小到大,因此还需要使用 -r 选项反转结果,-h 以友好的阅读格式。

最后使用 head 命令仅打印标准输出的前 10 行。

du 命令查找统计目录空间#

du 命令用于评估文件空间使用情况,对于查找占用大量磁盘空间的目录特别有用。

命令 du -ahx . | sort -rh | head -5 将打印当前目录下占用最大磁盘空间的目录。在输出中第一列是目录的大小,第二列是目录名称。

du -ahx . 估算当前目录. 中的磁盘空间,包括文件和目录 ah 以友好的阅读格式打印大小并 x 跳过不同文件系统上的目录。

sort -rh 排序结果,由于 sort 命令默认是从小到大,因此还需要使用 -r 选项反转结果,-h 友好的阅读格式打印到标准输出。

最后使用 head 命令仅打印管道输出的前 5 行。

du -ahx . | sort -rh | head -5
55G    .
24G    ./.vagrant.d/boxes
24G    ./.vagrant.d
13G    ./Projects
5.2G    ./.minikube

结论#

当磁盘已满并且您想要释放它时,在 Linux 搜索大文件非常有用。现在您已经知道如何找到了系统中的大文件。如果您有任何问题或意见,请在下面留言。

本作品采用《CC 协议》,转载必须注明作者和本文链接
杭州 PHP 有好工作求推荐
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。