在Linux中查找大文件

时间:2020-03-05 15:26:46  来源:igfitidea点击:

随着时间的流逝,磁盘驱动器上可能会堆满许多不必要的文件,这些文件占用了大量磁盘空间。
通常,由于日志或者备份文件较大,Linux系统会用完磁盘空间。

本教程说明了如何使用“ find”和“ du”命令在Linux系统中查找最大的文件和目录。

使用“find”命令查找大文件

“查找”命令是Linux系统管理员中最强大的工具之一。
它使我们可以根据不同的条件(包括文件大小)搜索文件和目录。

例如,要在当前工作目录中搜索大小大于100 MB的文件,可以运行以下命令:

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'命令还可以与其他工具(例如'ls'或者'sort')结合使用,以对那些文件执行操作。

在下面的示例中,我们将'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'-仅搜索当前工作目录('。')中大于100MB('-size + 100M')的文件('-type f'),不要' t降级其他文件系统上的目录('-xdev'),并在标准输出上打印完整的文件名,然后换行('-print')。
  • 'xargs ls -lh'-'find'命令的输出通过管道传递给'xargs',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”命令具有许多其他选项,可用于优化磁盘空间使用情况的输出。