You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本如何列出按大小排序的文件且不显示文件夹大小

解决方案

你当前使用的du命令默认会同时输出目录和文件的容量统计结果,要仅筛选文件、提取指定目录及其子目录下体积最大的前10个文件,可参考以下实现:

推荐写法(兼容特殊文件名,稳定性高)

通过find先精准过滤出所有普通文件,再做容量统计排序,不会混入目录、软链接等非文件条目,完全适配脚本使用场景:

# 脚本中使用时,将目标目录替换为传入的参数即可,例如$1
sudo find <目标目录路径> -type f -exec du -h {} + | sort -hr | head -n 10

参数说明:

  • -type f:仅匹配普通文件,从根源上排除目录项
  • -exec du -h {} +:批量将找到的文件传入du计算人类可读格式的容量,执行效率远高于逐个文件调用
  • sort -hr:按容量从大到小逆序排序,支持识别K/M/G等易读容量单位
  • head -n 10:截取排序后的前10条结果

基于原命令的改法

如果要保留你原命令中-S(统计目录容量时不包含子目录占用)的逻辑,可以在原命令后增加文件类型判断,过滤掉目录条目:

sudo du -haS ../../src/ | while read size path; do [ -f "$path" ] && echo "$size	$path"; done | sort -hr | head -n 10

注意:该写法对包含换行符的特殊文件名兼容性较差,仅适合临时使用,正式脚本优先选择上面的find实现。

高精度排序优化版

如果需要避免sort -h的单位识别误差、输出格式更整齐,可以先按字节数做纯数字排序,最后再转换为易读格式:

sudo find <目标目录路径> -type f -printf "%s %p\n" | sort -nr | head -n 10 | numfmt --to=iec --suffix=B --padding=7

内容的提问来源于stack exchange,提问作者Andrey Romashev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 09:45:32