我需要帮助我的bash脚本。
该任务正在计算目录中文件的总大小。我已经做过了(使用ls,awk和grep)。我的输出可能如下所示:
1326
40
598
258
12
$
这些数字表示目录中文件的大小。 我需要把它们全部算在内,我就在这里。 所以如果有人能告诉我如何统计它们(并找到目录中文件的总大小),我将非常感激
谢谢
答案 0 :(得分:2)
好吧,在Unix shell编程中,永远不要忘记最基本的哲学:
这是的法语使用正确的工具做一件事,但做得很好。您可以通过混合使用ls
或find
,grep
,awk
,cut
和{{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表示数字,但不是字符串)并在完成后打印它们的总和和计数。