如何通过使用cut,eval,head,tr,tail,ls和echo从ls-l计算所有文件的总大小

时间:2018-09-29 11:33:21

标签: bash shell unix

 ls -l | tr -s " " | cut -d " " -f5

我尝试了上面的代码并获得了以下输出。

  

158416   757249   574994   144436   520739   210444   398630   1219080   256965   684782   393445   157957   273642   178980   339245

如何添加这些数字。我被困在这里。请不要使用awk,perl,shell脚本等。

3 个答案:

答案 0 :(得分:1)

使用du最简单。像这样的东西:

du -h -a -c | tail -n1

将给您总计。您还可以使用-d参数指定遍历的深度,例如:

du -d 1 -h -a -c | tail -n1

您将必须澄清“不使用Shell脚本”的含义,以便任何人都能得出更有意义的答案。

答案 1 :(得分:0)

您可以尝试这种方式,但是$((...))是shell脚本

eval echo $(( $(ls -l | tr -s ' ' | cut -d ' ' -f5 | tr '\n' '+')  0 ))

答案 2 :(得分:0)

Don't parse the output of ls。它不用于解析。与Martin Gergov's answer一起使用du。或du and findjust du

但是,如果只加数字是唯一的重点(即使输入不可靠),那么这是最懒的方法(首先安装num-utils):

ls -l | tr -s " " | cut -d " " -f5 | numsum

还有其他方法,另请参见:How can I quickly sum all numbers in a file?