在日常服务器维护中,我们经常会遇到磁盘空间告急的情况,快速准确地找出那些占用大量空间的文件,是每一位系统管理员必备的技能,对于使用CentOS系统的用户来说,掌握几个高效的命令行工具,就能让大文件查找工作变得轻松简单。

使用 find 命令进行精确查找
find 命令是Linux系统中最强大、最常用的文件查找工具之一,它能够根据多种条件(如文件名、大小、类型、时间等)在指定目录中搜索文件。
查找大文件,最核心的选项就是 -size,我们想在根目录 下查找大于100MB的文件,可以执行:
find / -type f -size +100M
-type f:指定查找的对象是普通文件,而不是目录或链接等。-size +100M:表示查找文件大小大于100MB的文件,这里的 表示“大于”, 表示“小于”,单位可以是c(字节)、k(千字节)、M(兆字节)、G(千兆字节)。
这个命令可能会列出很多文件,为了更清晰地查看,我们可以结合 -exec 选项,直接显示这些文件的详细信息:
find / -type f -size +100M -exec ls -lh {} \; -exec ... \;:对找到的每一个文件执行后续的命令。ls -lh {}:对找到的文件(用 代替)执行ls -lh命令,以人类易读的格式列出其大小、权限等信息。
使用 du 命令深入分析目录占用
如果发现某个目录占用空间过大,我们需要深入其中,找出是哪些子目录或文件在“作怪”,这时 du(磁盘使用情况)命令就派上用场了。
一个非常实用的组合命令是:
du -h --max-depth=1 /path/to/directory | sort -hr
du -h:以人类易读的格式(K, M, G)显示目录和文件的磁盘使用情况。--max-depth=1:只深入到指定目录的第一级子目录,如果你想看更深的层级,可以修改这个数字。| sort -hr:将du的结果通过管道传递给sort命令进行排序。-h表示按照人类易读的数字大小排序,-r表示逆序(从大到小)。
要分析根目录下哪个一级子目录占用空间最大,可以运行:

cd / && du -h --max-depth=1 | sort -hr
这个命令的输出会清晰地将占用空间最大的目录排在前面,让你迅速定位问题源头。
使用 ls 命令进行快速排序
在已经确定某个目录存在大文件的情况下,使用 ls 命令进行排序是最直观快捷的方法。
ls -lhS /path/to/directory
-l:使用长列表格式,显示详细信息。-h:以人类易读的格式显示文件大小。-S:按文件大小进行降序排序。
这个命令能让你一目了然地看到该目录下所有文件的大小排行。
结合 grep 进行条件过滤
有时,我们可能还需要根据文件名特征来查找大文件,这时可以将 find 或 ls 与 grep 命令结合使用。
查找 /var/log 目录下所有大于50MB且以 .log 结尾的文件:
find /var/log -name "*.log" -type f -size +50M
或者,在列出某个目录的文件时,只关心包含特定关键词的大文件:

ls -lhS /path/to/directory | grep -i "keyword"
注意事项与实用技巧
权限问题:在使用
find搜索系统根目录 时,很可能会遇到大量 “Permission denied” 的错误提示,这属于正常现象,因为普通用户无权访问某些系统目录,为了屏蔽这些干扰信息,可以将错误输出重定向:find / -type f -size +100M 2>/dev/null
2>/dev/null的作用是将所有错误信息丢弃,只显示正常的查找结果。注意挂载点:
find命令默认会遍历所有挂载点(如/home,/boot等),如果你只想查找系统盘上的文件,可能需要从 开始,或者指定特定的挂载点。处理软链接:
du命令默认会统计符号链接指向的原文件大小,如果你不希望这样,可以使用-L选项来跟随符号链接,但需谨慎使用,以免在存在循环链接时造成统计混乱。释放空间:找到大文件后,在决定删除之前,务必确认该文件是否重要,对于日志文件,通常可以使用
truncate或> filename的方式清空内容,而不是直接删除,特别是对于仍在被进程占用的日志文件,直接删除可能导致空间不释放。
作为在服务器管理领域有多年实践经验的站长,我认为熟练使用这些命令并非终点,而是一种起点,真正的价值在于将这些工具融入日常的运维流程中,形成定期检查磁盘空间的习惯,一个整洁有序的文件系统,不仅是服务器稳定运行的基石,也体现了管理者的专业水准,每次通过几条命令快速定位并解决空间问题,都能有效避免因磁盘写满而导致的业务中断风险,这种主动式维护远比被动救火更有价值。

