Bash:当前目录中与正则表达式匹配的文件总大小

时间:2013-02-04 15:56:17

标签: bash shell sh

ls | grep -P "$1" | awk '{ x += $5 } END { print "total bytes:" x }' 

此代码使用“[0-9]”作为reg expr返回0,在当前文件夹中有2个文件名为:“1”和“6”,每个文件大小为138bytes。

任何人都可以帮我找到问题吗?

2 个答案:

答案 0 :(得分:2)

du可以为您提供帮助;它有一个-c标志,用于显示“总计”。它导致最后一行包含总大小,后跟单词total。因此,以下内容应该为您提供选择的总大小(字节):

du -bc yourFilePattern | awk 'END {print $1}'

编辑:

如果*pattern*之类的内容不够,而您想要正则表达式,请使用:

ls | grep -P "$regex" | xargs du -bc | awk 'END {print $1}'

答案 1 :(得分:2)

您只是错过-l的{​​{1}}选项。

ls