gpt4 book ai didi

bash - 文件列表中带有awk的文件大小总和

转载 作者:行者123 更新时间:2023-12-02 08:36:15 26 4
gpt4 key购买 nike

我有一个文件列表,想对它们的文件大小求和。
因此,我创建了一个(全局)变量作为计数器,并尝试遍历该列表,使用ls获取文件大小,然后使用

export COUNTER=1
for x in $(cat ./myfiles.lst); do ls -all $x | awk '{COUNTER+=$5}'; done

但是,我的柜台是空的吗?
> echo $COUNTER
> 1

有人对我有想法吗,我在这里想念的是什么?

欢呼和感谢,
汤玛士

好的,我找到了一种方法,将awk管道的结果传递给变量
(这可能并不优雅,但可以正常工作;))
for x in $(cat ./myfiles.lst); do a=$(ls -all $x |awk '{print $5}'); COUNTER=$(($COUNTER+$a)) ; done

> echo $COUNTER
> 4793061514

最佳答案

因为您做错了。每个文件都会调用Awk,因此在COUNTER中,您得到了最后一个文件的大小。

更好的解决方案是:

ls -all <myfiles.lst | awk '{COUNTER+=$5} END {print COUNTER}'

但是您在这里重新发明轮子。你可以做类似的事情
du -s <myfiles.lst 

(如果安装了 du。注意:请参阅我的关于 du的答案下面的评论。我已经使用 cygwin测试了它,并且它像一种魅力一样工作。)

关于bash - 文件列表中带有awk的文件大小总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21157833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com