随着时间的推移,您的磁盘驱动器可能会被大文件占用大量磁盘空间,不必要文件弄得乱七八糟。
通常是因为大型日志文件或备份文件,导致你的Linux系统的磁盘空间不足。在本教程将说明如何在Linux使用find
和du
命令搜索大文件和目录。
通常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
命令的标准输出通过管道传递到xargs
,xargs
运行命令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 .
估算当前目录.
中的磁盘空间,包括文件和目录a
,h
以友好的阅读格式打印大小并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 搜索大文件非常有用。现在您已经知道如何找到了系统中的大文件。如果您有任何问题或意见,请在下面留言。