我正在尝试仅使用 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/