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

如何让du命令仅作用于文件而非目录?

解决du命令仅统计文件的问题

嘿,这个需求我太熟了!之前用du *的时候总是把目录也统计进去,折腾了好几个靠谱的办法,现在分享给你:

方法1:用find精准筛选(通用所有shell)

这是最稳妥的方案,不管你用bash、zsh还是其他shell都能生效:

# 只统计当前目录下的文件,不递归子目录
find . -maxdepth 1 -type f -exec du -sh {} +

# 要递归统计所有子目录里的文件?去掉-maxdepth 1就行
find . -type f -exec du -sh {} +
  • -type f:直接告诉find只找普通文件,完全排除目录
  • -maxdepth 1:限制查找范围在当前目录,避免递归子目录
  • -exec du -sh {} +:把找到的文件批量传给du,-sh让输出是人类可读的大小格式

方法2:bash扩展glob(简洁到飞起)

如果你的bash开启了extglob(绝大多数系统默认开启),一行命令就能搞定:

# 统计当前目录下的所有非目录文件
du -sh !(*/)

# 要是需要包含隐藏文件,先开个小开关
shopt -s dotglob
du -sh !(*/)

!(*/)是bash的扩展匹配语法,专门匹配不是目录的条目——因为目录在glob匹配里会自动带/后缀,刚好被排除在外。

方法3:du+grep快速过滤(临时救急)

如果只是临时用一次,不想记复杂命令,用这个组合也能凑活:

du -ah | grep -v '/$'
  • -ah:-a让du显示所有文件和目录,-h让大小更易读
  • grep -v '/$':把所有以/结尾的行(也就是目录的统计行)过滤掉

不过这个方法要注意:如果文件名里有特殊字符可能会出小问题,但日常使用完全够了。

内容的提问来源于stack exchange,提问作者M. Abra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:07:24