计算shell中文件的大小

我试图计算所有文件的总大小(在一个目录树中)匹配一个文件名模式,只是使用shell。 这是我迄今为止:

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

有没有更简单的方法来做到这一点? 我觉得应该有一个简单的杜或find开关,这对我来说,但我找不到一个。

要清楚,我想要在一个目录树下的任何地方总共匹配模式的文件

du -bs * .undo

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

尝试:

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

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

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

用zsh,你可以使用扩展的globbing来做:

du -c ** / *。撤消

 find -name *.undo -print0 | du -hc --files0-from=- 
 du -c *pattern* 

这将在最后一行输出中打印总数。

我也一直在看这个问题(只有一年后…) – 只是发现这个网页。

我发现的东西(对我来说)如下:

 find /mnt/iso -name *.avi -printf "%s\n" | paste -sd+ - | bc 

这将返回/ mnt / iso下面所有子文件夹中所有.avi文件的总大小

我不得不放弃对radoulov的粘贴命令 – 看到这个页面: 壳命令总结整数,每行一个?

只是为了添加 – 为了防止文件夹与search词相匹配 – 在find命令中使用-type f也是一个好主意。

 find -name '*.undo' -exec wc -c {} + | tail -n 1 

应该给文件中实际的字节总数,如果你没有太多的文件(“太多”将是一个非常大的数字,可能是成千上万)。 或者,如果你只是想单独获取号码,

 find -name '*.undo' -exec wc -c {} + | tail -n 1 | cut -d' ' -f 1 

Python是大多数Linux发行版的一部分。

 import os import fnmatch size= 0 for path, dirs, files in os.walk( '.' ): for f in files: if fnmatch.fnmatch(f,'*.py'): fileSize= os.path.getsize( os.path.join(path,f) ) print f, fileSize size += fileSize print size 

很长,但非常清晰,高度可扩展。

 find -name '*.undo' -print0 | du -hc --files0-from=- | tail -n 1 

从gerdemb和strager的贡献放在一起。 使用du -cb应显示字节。

我使用这样的du命令来获取数字:

 du file_list | awk '{s+=$1} END {print s}' 

这个简单的怎么样?

 find ./ -name *.undo | xargs wc 

或者,你可以这样做:

 dir=$1 for file in $dir/* ; do length_file=`stat -c %s $file` echo "File $file has length $length_file" length_total=`expr $length_total + $length_file` done echo "Total length: $length_total ." 

stat显示文件或文件系统状态。 参数-c表示使用指定格式而不是默认格式,格式序列$ s允许显示总字节数。

 expr 

只是评估一个expression式。

Perl一行:

 find . -name "*.undo" -ls | perl -lane '$t += $F[6]; END{print $t}' 

@F autosplit数组开始于索引$F[0]而awk字段以$ 1开始,因此使用$F[6]而不是awk的$7

du -c | awk'/./{line=$0} END {print $ 1}'

我认为xargs的版本可以修改(简化)ls -1 * .undo | xargs wc

检查du (磁盘使用情况)命令。