Linux:查找文件中文件路径的总文件大小

Linux:查找文件中文件路径的总文件大小,linux,Linux,我有一个包含以下文件路径的文件: ./file1 ./dir/file2 ./dir3/dir4/fil3 etc 我怎样才能找到它们的总文件大小?我知道“du”用于获取单个文件的文件大小,但不知道如何使用文件 谢谢您可以使用du给出多个文件的总大小 cat file | tr "\n" "\0" | du -ch --files0-from=- | tail -n1 使用awk获取文件大小 cat file | awk '{system("ls -l " $0)}' | awk '{

我有一个包含以下文件路径的文件:

./file1
./dir/file2
./dir3/dir4/fil3
etc
我怎样才能找到它们的总文件大小?我知道“du”用于获取单个文件的文件大小,但不知道如何使用文件


谢谢

您可以使用du给出多个文件的总大小

 cat file | tr "\n" "\0" | du -ch --files0-from=- | tail -n1
使用awk获取文件大小

 cat file | awk  '{system("ls -l " $0)}' | awk '{ TOTAL += $5} END { print TOTAL}'
GNU coreutils du唯一建议 编辑:命名选项
--files0 from
是GNU扩展,因此建议的解决方案不适用于任何非GNU coreutils du版本。由于你不想拥有它,Vivek Goel发布的
awk
版本是你应该尝试的版本

你已经回答了你自己的问题。使用
du
是关键。您正在寻找的“缺失”选项可能就是手册页面中的这个选项。(满度)

--files0 from=F
总结文件F中指定的以NUL结尾的文件名的磁盘使用情况;如果F为-则从标准输入读取名称

用法如下:

tr "\n" "\0" <file-list | du --files0-from=- 

返回文件大小的
tr“\n”“\0”正在运行,但我的文件非常大,我得到:-bash:/usr/bin/du:参数列表太长,如mikyra建议的使用“tr”\n”“\0”请使用tr.cat文件| tr“\n”“\0”| du-ch--files0 from=-| tail-n1@keepwalking您可以使用awk和ls来获取文件大小。请查看更新的答案。我得到了:du:非法选项--usage:du[-Aclnx][H |-L |-P][H |-k |-m][a |-s |-d depth][B blocksize][i mask][t threshold][file…]oops-有一件事我忘了提到
中的
-files0是GNU扩展,所以它不能与busybox-du或类似的东西一起使用。如果
du--version
未报告(GNU coreutils),则来自
otpion的
--files0将不存在。