怎么按大小排序查找大文件

联启 电脑工具 2

本文目录导读:

怎么按大小排序查找大文件-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 方法一:find + sort(最常用,支持所有Unix/Linux)
  2. 方法二:du + sort(更适合找大文件/目录)
  3. 方法三:只查特定大小以上的文件(速度更快)
  4. 方法四:使用 ncdu(交互式图形界面,最直观)
  5. 方法五:使用 fd + sort(更快,适合大目录)
  6. 常见需求示例
  7. 注意事项

在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:只找文件,排除目录
  • -lhSl 长格式,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 -aha 显示文件,h 人类可读,2>/dev/null 忽略权限报错
  • sort -rhr 降序,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+500M
  • sort -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'

注意事项

  1. 根目录扫描()需要 sudo,否则会有权限拒绝报错
  2. sort -h 虽好,但部分旧系统不支持(-h 是GNU扩展),可以用 sort -n 配合 ls -lS(用字节排序)代替
  3. *`du -sh `** 只显示当前目录下的一级条目,不深入子目录内的文件(适合看目录层级)
  4. ls -lhS 的排序问题-h 生成的是“1.2G”“234M”这样的字符串,按字母序时“1.1G”会排在“100M”前面(因为1 < 1),所以最好用 -lS(字节)或 sort -h 补丁

标签: sort

抱歉,评论功能暂时关闭!