答案:linux下按大小筛选文件主要用find、ls和du命令。find支持按大小(+大于、-小于、=等于)和单位(c/k/M/G)精确查找,如find /path -type f -size +100M找大于100MB的文件;ls结合-S排序和head/tail快速查看最大或最小文件,如ls -lS | head -n 6显示最大的5个;du配合sort识别大目录或文件,如du -sh */ | sort -hr列出子目录大小降序;注意find的-size以块为单位可能向上取整,权限问题可加2>/dev/NULL屏蔽错误。

Linux 下按大小筛选文件,主要靠 find 和 ls 两个命令配合条件参数实现,核心是理解大小单位写法和比较逻辑(比如 +10M 表示“大于 10MB”,-10M 表示“小于 10MB”)。
用 find 按大小精确查找文件
find 是最常用、最灵活的方式,支持按字节、KB、MB、GB 等单位筛选,还能组合其他条件(如类型、时间等)。
- 查找大于 100MB 的普通文件:
find /path -type f -size +100M - 查找小于 1KB 的文件:
find /path -type f -size -1k - 查找大小正好等于 512 字节的文件:
find /path -type f -size 512c(c表示字节) - 查找大于 10MB 且最近 7 天修改过的文件:
find /path -type f -size +10M -mtime -7
注意:+ 表示“大于”,- 表示“小于”,不加符号表示“等于”;单位后缀常用 c(字节)、k(KB)、M(MB)、G(GB),大小写敏感(m 不合法,必须是 M)。
用 ls 列出并按大小排序查看
ls 本身不筛选,但能按大小排序 + 配合 head/tail 快速定位最大/最小的几个文件,适合快速浏览。
- 按大小降序列出当前目录所有文件(最大在前):
ls -lS - 只看最大的 5 个文件:
ls -lS | head -n 6(head -n 6是因为第一行是总用量) - 只看最小的 3 个普通文件(排除目录):
ls -lSr | grep '^-' | head -n 3
提示:-S 按大小排序,-r 表示反向(升序),-l 显示详细信息便于确认大小。
用 du + sort 快速找大目录或大文件
du 统计磁盘使用量,配合 sort 可快速识别占用空间最多的目录或文件,适合排查磁盘满的问题。
- 列出当前目录下各子目录大小(降序):
du -sh */ | sort -hr - 找出整个系统中最大的 10 个文件(含子目录):
find / -type f -exec du -h {} + 2>/dev/null | sort -hr | head -n 10
说明:-h 输出人类可读格式(如 2.4G),sort -hr 按人类可读数字逆序排序;2>/dev/null 屏蔽权限错误提示。
小技巧:避免常见坑
实际使用时容易踩几个小坑,提前注意能省不少时间:
- find 的 -size 单位是“向上取整块”:比如一个 1025 字节的文件,
-size +1k会匹配(因为 1k=1024 字节,它占用了 2 块),但-size +1024c就不会(严格按字节数比) - 路径权限不足会报错:加
2>/dev/null或先用sudo(如需查系统目录) - ls -S 对硬链接或特殊文件可能不准:它按
st_size字段排序,而 du 才反映真实磁盘占用
基本上就这些。按大小筛选文件不复杂,关键是记清 find 的单位语法和比较符号含义,再根据场景选对命令组合。