用于查找与通配符匹配的文件总大小的简短命令

问题描述 投票:0回答:3

我可以设想一个简单的 shell 脚本,只需迭代目录中的文件列表并对各个文件的大小求和即可完成我想要的任务,但我想知道是否已经有更简洁的方法来做到这一点。

类似

的东西
ls -lh *.jpg

这给了我目录中所有 jpg 文件的总大小

linux bash
3个回答
68
投票

尝试

du
总结磁盘使用情况:

du -csh *.jpg

输出(例如):

8.0K sane-logo.jpg
16K sane-umax-advanced.jpg
28K sane-umax-histogram.jpg
24K sane-umax.jpg
16K sane-umax-standard.jpg
4.0K sane-umax-text2.jpg
4.0K sane-umax-text4.jpg
4.0K sane-umax-text.jpg
104K total

du
不总结文件的大小,而是总结文件系统中已使用块的大小。如果文件大小为 13K 并且文件系统使用的块大小为 4K,则该文件将显示 16K。


12
投票

如果不显示文件列表,而只显示总大小,请使用以下命令:

du -ch *.php.* | tail -1

输出:

196M    total

如果你想在脚本中使用它,更好的是:

du -ch *.php.* | tail -1 | awk '{print $1}'

仅显示尺寸。


9
投票

您可以使用此功能:

dir () { ls -FaGl "${@}" | awk '{ last_size += $4; print }; END { print last_size }'; }

您也可以使用这个命令,它更短,给您更好的结果!

find YOUR_PATH -type f -name '*.jpg' -exec du -ch {} +
© www.soinside.com 2019 - 2024. All rights reserved.