发布于2026-08-17 阅读(0)
扫一扫,手机访问
要找出最大文件,最稳妥的办法还是把du和find配合起来用:先用du -ah | sort -hr做一轮定位,快速把体积大的目标揪出来;再用find -type f -size +阈值做精确筛选,直接锁定超出范围的文件,这两者刚好互补。相比之下,ls -lS只适用于当前目录,而且看不出真实的磁盘占用情况,关键的大文件很容易就漏掉。

直接查最大的文件,du + find 是最可靠的方式;ls -lS 只能看当前目录,且不递归、不处理硬链接、不反映真实磁盘占用,容易漏掉真正吃空间的文件。
全盘扫描开销大、耗时长,且可能因权限不足中断。建议限定路径,比如只查 /var、/home 或 /tmp:
find /var -type f -size +100M -exec ls -lh {} ;:列出所有大于 100MB 的文件,带可读大小和路径2>/dev/null 忽略权限错误:find /var -type f -size +100M -exec ls -lh {} ; 2>/dev/nullfind /var -type f -printf '%s %pn' 2>/dev/null | sort -nr | head -10 | awk '{print $2}' | xargs -r ls -lh注意:-printf '%s %pn' 输出的是字节数,sort -n 按数值排,-r 倒序;awk 提取路径再用 ls -lh 补充可读格式。
du 天然支持统计文件(不只是目录),但默认不显示单个文件——得加 -a:
du -ah . | sort -hr | head -20:列出当前目录及子目录下所有文件+目录,按大小倒序取前 20du -ah --max-depth=1 . | sort -hr | head -10:只查当前层(不含深层嵌套),更快更聚焦grep -v '/$':du -ah . | grep -v '/$' | sort -hr | head -10关键点:-h 和 sort -h 必须配套,否则 1K、234M、2G 会被当字符串排序,结果错乱。
ls -lS 乍一看很直接,实际上它只负责三件事:把当前目录里的条目列出来、按照 ls 输出中的 size 字段进行排序、而且既不递归,也不会统计硬链接的真实占用;另外,这里的 size 指的是逻辑大小,不是磁盘块实际占用。也正因为如此,常见的误区往往就出在这里:
dd if=/dev/zero of=sparse bs=1G seek=1 count=0)用 ls -l 显示 0 字节,du -h 才反映实际磁盘占用ls 根本看不到,du 也统计不到,只有 lsof + /proc/*/fd 能揪出来ls -lS 不处理符号链接目标,du -L 才能穿透软链算源文件大小别一上来就扫全盘。先用 df -h 看哪个挂载点快满了,再针对性查:
df -h | grep '9[0-9]%|100%':快速定位高使用率分区/var/log(尤其 journald、nginx、mysql 日志)、/var/spool(邮件队列、打印缓存)、/root 或 /home/* 下的临时包/镜像/数据库 dumplsof +L1 /var/log 看是否有已删但仍 open 的日志文件最大文件往往不在显眼路径,而是在服务默认数据目录深处,或者被重命名隐藏(如 .old、.bak、~ 结尾)——find 的 -name 或 -regex 配合更有效。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9