在Shell中计算文件大小

8 浏览
0 Comments

在Shell中计算文件大小

我正在尝试仅使用shell来计算匹配文件名模式的所有文件(在目录树中)的总字节数。这是我到目前为止所拥有的:

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

有没有更简单的方法来完成这个任务呢?我觉得应该有一个简单的du或find开关可以为我做到这一点,但我找不到。

明确一下,我想要统计匹配任何目录树下模式的文件,这意味着

du -bs *.undo

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

admin 更改状态以发布 2023年5月22日
0
0 Comments

使用zsh,您可以使用扩展的globbing来执行以下操作:

du -c **/*.undo

0
0 Comments

尝试:

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

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

在此版本中,使用现有目录信息(文件大小)和find自带的ls功能应该是有效的,避免了进程创建或文件I/O。

0