本文目录导读:

- 方法一:
find+sort(最常用,支持所有Unix/Linux) - 方法二:
du+sort(更适合找大文件/目录) - 方法三:只查特定大小以上的文件(速度更快)
- 方法四:使用
ncdu(交互式图形界面,最直观) - 方法五:使用
fd+sort(更快,适合大目录) - 常见需求示例
- 注意事项
在Linux/macOS系统中,查找并按大小排序大文件,最常用的方法有以下几种(按推荐程度排序):
find + sort(最常用,支持所有Unix/Linux)
# 查找当前目录下所有文件(非目录)并按大小降序排列
find . -type f -exec ls -lhS {} + | head -50
# 或者更精确(按字节排序,避免 -h 可读性导致的排序错误)
find . -type f -exec ls -lS {} + | head -50
-type f:只找文件,排除目录-lhS:l长格式,h人类可读大小,S按大小降序排序- 标准做法是
-lS(不加h),因为-h的“1K”“1M”会被字母序误排
du + sort(更适合找大文件/目录)
# 查找当前目录下所有文件及目录的大小(MB级别以上) du -sh * | sort -rh | head -20 # 查找整个系统的大文件(需root,输出大于100MB的文件) du -ah / 2>/dev/null | sort -rh | head -30
du -ah:a显示文件,h人类可读,2>/dev/null忽略权限报错sort -rh:r降序,h人类可读数值排序(正确识别K/M/G/T)
只查特定大小以上的文件(速度更快)
# 查找大于100MB的所有文件
find / -type f -size +100M -exec ls -lh {} \; | sort -k5 -rh
# 或者直接输出大小并排序(更简洁)
find / -type f -size +100M -exec du -ah {} + | sort -rh
-size +100M:阈值设为100MB,可根据需要改为+1G、+500Msort -k5 -rh:按第5列(大小列)排序
使用 ncdu(交互式图形界面,最直观)
# 先安装(Ubuntu/Debian) sudo apt install ncdu # 扫描当前目录 ncdu . # 或者扫描整个根目录 sudo ncdu /
- 启动后自动显示所有文件和目录的大小(按大小排列)
- 可以用键盘上下键浏览,
d删除,q退出
使用 fd + sort(更快,适合大目录)
# 需要先安装 fd ( https://github.com/sharkdp/fd )
fd -t f -S +10M --exec du -h {} | sort -rh | head -20
-t f:只找文件-S +10M:大于10MB- 比
find快很多,尤其是有大量文件时
常见需求示例
| 需求 | 命令 |
|---|---|
| 查找当前目录最大的10个文件 | find . -type f -exec ls -lS {} + \| head -10 |
| 查找根目录下所有大于1G的文件 | find / -type f -size +1G -exec ls -lh {} + \| sort -k5 -rh |
| 查找/home下最大的目录(含子目录) | du -sh /home/* \| sort -rh \| head -10 |
| 实时监控系统大文件变化 | watch -n 60 'find / -type f -size +100M -exec du -ah {} + \| sort -rh \| head -20' |
注意事项
- 根目录扫描()需要
sudo,否则会有权限拒绝报错 sort -h虽好,但部分旧系统不支持(-h是GNU扩展),可以用sort -n配合ls -lS(用字节排序)代替- *`du -sh `** 只显示当前目录下的一级条目,不深入子目录内的文件(适合看目录层级)
ls -lhS的排序问题:-h生成的是“1.2G”“234M”这样的字符串,按字母序时“1.1G”会排在“100M”前面(因为1 < 1),所以最好用-lS(字节)或sort -h补丁
标签: sort
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。