myfreax

Linux 查找大文件与目录

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

4 min read
By myfreax
Linux 查找大文件与目录
Linux 查找大文件与目录

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

通常是因为大型日志文件或备份文件,导致你的Linux系统的磁盘空间不足。在本教程将说明如何在Linux使用finddu命令搜索大文件和目录。

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

find 命令查找大文件

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

find命令带有许多强大的选项。例如,您可以搜索超过多少天的大文件,具有指定扩展名的大文件或属于指定用户的大文件。

find命令还可以与其他命令组合使用,例如组合使用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 搜索大文件非常有用。现在您已经知道如何找到了系统中的大文件。如果您有任何问题或意见,请在下面留言。