给定files.txt中的文件列表,我可以得到它们的大小列表,如下所示:
cat files.txt | xargs ls -l | cut -c 23-30
这会产生这样的结果:
151552
319488
1536000
225280
我怎样才能得到所有这些数字的总数呢?
给定files.txt中的文件列表,我可以得到它们的大小列表,如下所示:
cat files.txt | xargs ls -l | cut -c 23-30
这会产生这样的结果:
151552
319488
1536000
225280
我怎样才能得到所有这些数字的总数呢?
当前回答
我喜欢使用....
echo "
1
2
3 " | sed -e 's,$, + p,g' | dc
它们会显示每一行的和…
适用于这种情况:
ls -ld $(< file.txt) | awk '{print $5}' | sed -e 's,$, + p,g' | dc
Total是最后一个值…
其他回答
粘贴不是必需的。只要files.txt包含一个或多个有效文件名,就可以执行以下操作:
<files.txt xargs stat -c %s | paste -sd+ | bc
如果没有文件,Cat不需要插入0。如果没有管道,也许在脚本中更方便,您可以使用:
(xargs -a files.txt stat -c %s || echo 0) | paste -sd+ | bc
我会用“du”来代替。
$ cat files.txt | xargs du -c | tail -1
4480 total
如果你只想要数字:
cat files.txt | xargs du -c | tail -1 | awk '{print $1}'
这里是
cat files.txt | xargs ls -l | cut -c 23-30 |
awk '{total = total + $1}END{print total}'
TMTWWTDI: Perl有一个文件大小操作符(-s)
perl -lne '$t+=-s;END{print $t}' files.txt
管呆了:
cat files.txt | xargs ls -l | cut -c 23-30 | gawk 'BEGIN { sum = 0 } // { sum = sum + $0 } END { print sum }'