使用find和du命令可快速定位Linux系统中的大文件和高占用目录,如find /path -size +100M查找大于100MB的文件,du -sh * | sort -hr列出目录大小并按降序排列,结合-exec、grep、sort等操作实现高效磁盘空间管理。

在Linux系统中,查找占用空间较大的文件是日常维护和清理磁盘空间的重要操作。通过合理的命令组合,可以快速定位大文件或大目录,释放存储资源。
使用find命令查找大文件
find 是Linux中最常用的文件搜索工具之一,支持按大小、时间、类型等条件筛选。要查找大文件,主要使用 -size 参数。
常见用法如下:
- find /path -type f -size +100M:查找指定路径下大于100MB的文件
- find /home -type f -size +1G:查找/home目录下大于1GB的文件
- find . -type f -size +500M -exec ls -lh {} \;:查找当前目录下大于500MB的文件,并显示详细信息
参数说明:
- -type f:只匹配普通文件
- -size +N:大于N的文件(+表示大于,-表示小于,无符号表示等于)
- 单位可选:c(字节), k(KB), M(MB), G(GB)
- -exec:对查找到的文件执行后续命令,如ls -lh查看详情
按目录统计空间占用找出大目录
有时需要先找出哪些目录占用了大量空间,再深入排查。使用 du 命令更高效。
- du -h /var | grep '[0-9]G':查看/var下以GB为单位的子目录大小
- du -sh /home/* | sort -hr | head -10:列出/home中最大的前10个目录
- du -ah /opt | sort -rh | head -20:列出/opt中最大的20个文件和目录
参数说明:
- -h:人类可读格式(如1.2G、340M)
- -s:汇总每个参数的总大小
- -a:显示所有文件和目录
- sort -h 或 -hr:按人类可读数值排序(r为逆序)
结合find与ls快速查看大文件列表
如果只想列出大文件并按大小排序,可以将find和ls结合使用。
- find / -type f -size +500M -exec ls -lah {} \; 2>/dev/null:查找全系统大于500MB的文件,忽略权限错误
- find /tmp -name "*.log" -size +100M:查找/tmp中大于100MB的日志文件
注意:搜索根目录时会输出大量“Permission denied”错误,可用 2>/dev/null 屏蔽错误信息。
基本上就这些。掌握 find 和 du 的基本用法,配合管道和排序,能快速定位系统中的大文件和高占用目录,帮助你有效管理磁盘空间。不复杂但容易忽略的是单位符号和正负号的区别,写错可能导致查不到结果。










