BASH计算所有行的数字

时间:2016-03-17 14:58:05

标签: bash shell awk lines counting

我需要帮助我的bash脚本。

该任务正在计算目录中文件的总大小。我已经做过了(使用ls,awk和grep)。我的输出可能如下所示:

1326
40
598
258
12
$

这些数字表示目录中文件的大小。 我需要把它们全部算在内,我就在这里。 所以如果有人能告诉我如何统计它们(并找到目录中文件的总大小),我将非常感激

谢谢

2 个答案:

答案 0 :(得分:2)

好吧,在Unix shell编程中,永远不要忘记最基本的哲学:

  

Keep It Simple, Stupid!

这是的法语使用正确的工具做一件事,但做得很好。您可以通过混合使用lsfindgrepawkcut和{{1}来实现您想要的效果}和...,或者您可以使用专为计算文件大小而设计的工具。

该工具为du

sed

但是,它会给出给定路径的每个目录中每个文件的大小。如果你想将它限制在目录中的文件(而不是下面的文件)中,你可以这样做:

% du -chs /directory
4.3G    /directory
4.3G    total

有关详细信息,请参阅手册页[% du -chsS /directory 3G /directory 3G total ],以下是我在答案中使用的参数:

man du

如果删除-c, --total produce a grand total -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G) -s, --summarize display only a total for each argument ,您将获得目录中每个文件的大小详细信息,如果删除-s,您将拥有完整的字节大小(而不是舍入为更易读的形式) ),如果您删除-h,则不会有总计(即最后的-c行)。

HTH

答案 1 :(得分:1)

awk救援!

awk '$1+0==$1{sum+=$1; count++} END{print sum, count}'

加起来计算所有数字($ 1 + 0 == $ 1表示数字,但不是字符串)并在完成后打印它们的总和和计数。