Linux du 排序找出占用最大的文件

9次阅读

用 du 定位大文件的核心是“计算大小 + 排序 + 截取顶部结果”,常用命令为 du -h . | sort -hr | head -n 5;若只查纯文件,用 find . -type f -exec du -h {} + | sort -hr | head -n 5;可加 -size 过滤(如 +100m)、–exclude 跳过无关路径。

Linux du 排序找出占用最大的文件

du 找出占用最大的文件,核心是“计算大小 + 排序 + 截取顶部结果”,不依赖图形界面,终端一条命令就能定位问题文件。

基础组合:du + sort + head 定位前 N 个大文件

最常用、最直接的方式:

  • du -h . | sort -hr | head -n 5 —— 查当前目录及子目录下所有项(含文件和文件夹),按人类可读大小倒序排,取前 5 行
  • 注意:du 默认统计目录时包含其全部子内容,所以结果里既有单个大文件,也可能有“看似很大”的目录。若只关心纯文件,需配合 find

精准筛选纯文件(排除目录干扰)

避免把一个大目录当成“大文件”误判,推荐用 find 先限定类型再统计:

  • find . -type f -exec du -h {} + | sort -hr | head -n 5 —— 只查普通文件,-exec du -h {} + 高效批量处理,比 ; 更快
  • 如提示“Argument list too long”,可改用 xargsfind . -type f -print0 | xargs -0 du -h | sort -hr | head -n 5

按指定大小过滤,跳过小文件

节省排序开销,尤其在海量小文件场景下更高效:

  • find . -type f -size +100M -exec du -h {} + | sort -hr | head -n 5 —— 只统计大于 100MB 的文件
  • 单位支持:k(KB)、M(MB)、G(GB),如 +2G 表示大于 2GB

排除干扰路径,聚焦关键区域

跳过缓存、日志、临时目录等已知非重点区域,加快分析速度:

  • du -h –exclude=’./log’ –exclude=’./cache’ –exclude=’./tmp’ . | sort -hr | head -n 5
  • 也可用 --exclude-from=file.txt 批量读取要忽略的路径列表
text=ZqhQzanResources