linux - 计算shell中文件的大小

标签 linux shell

我正在尝试仅使用 shell 计算与文件名模式匹配的所有文件(在目录树中)的总大小(以字节为单位)。这是我目前所拥有的:

find -name *.undo -exec stat -c%s {} \; | awk '{total += $1} END {print total}'

有没有更简单的方法来做到这一点?我觉得应该有一个简单的 du 或 find 开关可以为我执行此操作,但我找不到。

为了清楚,我想在目录树下的任何地方对匹配模式的文件进行总计,这意味着

du -bs *.undo

不起作用,因为它只匹配当前目录中的文件。

最佳答案

试试:

find . -name "*.undo" -ls | awk '{total += $7} END {print total}'

在我的系统上,文件的大小是 find -ls 输出中的第七个字段。如果您的 find ... -ls 输出不同,请调整。

在这个版本中,使用现有的目录信息(文件大小)和 find 的内置 ls 功能应该是高效的,避免进程创建或文件 i/o。

关于linux - 计算shell中文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/599027/

相关文章:

c - 使用交叉编译器运行 Makefile 时出错

linux - Linux 中的稳定排序

linux - 如何将 linux 命令作为命令行参数传递给 bash 执行?

linux - 从 bash 脚本创建的全局 bash 脚本别名

linux - Fuser 无法统计文件 - 奇怪的行为

linux - Bash 脚本 For Loop 包含 if/else 问题

ruby-on-rails - 我应该升级 - jaunty 9.0.4 服务器 - 因为它不是 LTS?

linux - 腻子 : Network Error: Software caused connection abort

windows - 这些批处理代码行是做什么用的?

linux - 如何从许多文件中删除包含特殊字符的字符串