在Linux中查找大文件

评论 0 浏览 0 2019-01-09

随着时间的推移,你的磁盘驱动器可能会被许多不必要的文件占用大量的磁盘空间而变得杂乱无章。通常情况下,Linux系统由于大量的日志或备份文件而耗尽磁盘空间。

本教程解释了如何使用finddu命令来查找Linux系统中最大的文件和目录。

使用find命令查找大文件

find命令是Linux系统管理员的武器库中最强大的工具之一。它允许你根据不同的标准来搜索文件和目录,包括文件大小。

例如,如果要在当前工作目录中搜索大小超过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命令也可以与其他工具结合使用,如lssort,以对这些文件进行操作。

在下面的例子中,我们将find命令的输出传给ls,它将打印每个找到的文件的大小,然后用管道将输出传给sort命令,根据第5列(即文件大小)进行排序。

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

输出结果将看起来像这样。

输出

-rw-------  1 root   root 40967M Jan  5 14:12 /var/lib/libvirt/images/win10.qcow2
-rw-------  1 root   root  3725M Jan  7 22:12 /var/lib/libvirt/images/debian-9_default.img
-rw-------  1 root   root  1524M Dec 30 07:46 /var/lib/libvirt/images/centos-7-desktop_default.img
-rw-------  1 root   root   999M Jan  5 14:43 /var/lib/libvirt/images/ubuntu-18-04-desktop_default.img
-rw-------  1 root   root   562M Dec 31 07:38 /var/lib/libvirt/images/centos-7_default.img
-rw-------  1 root   root   378M Jan  7 22:26 /var/lib/libvirt/images/bionic64_default.img

如果输出包含很多行的信息,你可以使用head命令,只打印前10行。

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

让我们来分析一下这个命令。

  • find . -xdev -type f -size +100M -print - 只搜索当前工作目录(.)中的文件(-type f),大于100MB(-size +100M),不要下降其他文件系统的目录(-xdev),并在标准输出端打印完整的文件名,后面是一个新的行(-print)。
  • xargs ls -lh--find命令的输出被输送到xargs,该命令执行ls -lh命令,该命令将以长列的人类可读的格式打印输出。
  • sort -k5,5 -h -r--根据第5列排序行(-k5,5),以人类可读的格式比较数值(-h),并将结果反转(-r)。
  • head : 只打印管道输出的前10行。

find命令带有很多强大的选项。例如,你可以搜索超过x天的大文件,具有特定扩展名的大文件,或属于某个特定用户的大文件。

使用du命令查找大的文件和目录

du命令用于估计文件空间的使用情况,它对寻找消耗大量磁盘空间的目录和文件特别有用。

下面的命令将打印出最大的文件和目录。

du -ahx . | sort -rh | head -5

第一栏包括文件的大小,第二栏是文件的名称。

输出

55G	.
24G	./.vagrant.d/boxes
24G	./.vagrant.d
13G	./Projects
5.2G	./.minikube

命令的解释:

  • du -ahx .估算当前工作目录下的磁盘空间使用情况.),同时计算文件和目录(a),以人类可读的格式打印大小(h),并跳过不同文件系统上的目录(x)。
  • sort -rh :通过比较人类可读格式的值对行进行排序(-h),并对结果进行反向排序(-r)。
  • head -5 : 只打印管道输出的前五行。

du命令有许多其他选项,可以用来细化磁盘空间使用的输出。

总结

我们已经向你展示了如何使用finddu命令来查找最大的文件和目录。

现在你已经学会了如何找到系统中最大的文件,你可能想阅读我们关于如何使用Linux命令行删除文件和目录的指南

如果你有任何问题或意见,请在下面留言。

最后更新2023-10-04
0 个评论
标签