Linux 使用完整路径计算生成的文件夹列表中所有文件的总大小

Linux 使用完整路径计算生成的文件夹列表中所有文件的总大小,linux,ls,du,Linux,Ls,Du,我有一个包含多个完整路径的目录的列表: /mnt/directory_1/sub_directory_1/ /mnt/directory_2/ /mnt/directory_3/sub_directory_3/other_directories_3/ 我需要计算一下这个列表的总大小 从 这是我能找到的最接近的答案,但给了我以下错误信息: bash:/bin/du:参数列表太长 不要使用反勾号“”。改用$(..) 不要使用: command $(cat something) 这是一种常见的

我有一个包含多个完整路径的目录的列表:

/mnt/directory_1/sub_directory_1/

/mnt/directory_2/

/mnt/directory_3/sub_directory_3/other_directories_3/
我需要计算一下这个列表的总大小

这是我能找到的最接近的答案,但给了我以下错误信息:

bash:/bin/du:参数列表太长


不要使用反勾号“”。改用
$(..)

不要使用:

command $(cat something)
这是一种常见的模式。它适用于简单的情况,失败的情况更多,因为
$(…)
的结果会经历分词和文件名扩展

请使用检查脚本

如果要“从文件运行带参数的命令”,请使用
xargs
或编写循环。阅读另外,
xargs
本身会处理太多的参数。我还要将
-s
添加到
du
。尝试:

xargs -d'\n' du -sch < file_list.txt | tail -1 | cut -f 1
xargs-d'\n'du-sch

测试

我有一个包含
列表的列表,该列表是如何存储的
$file\u list
-变量
$file\u list
的内容是什么?迭代列表并对结果求和。@KamilCuk和William所说的:另外:“人类可读”(
-h
)并不能真正为算术提供各种单位(例如,输出中的一些K/M/g)@KamilCuk$file_列表是文件名。我这样运行:du-ch'cat file_list.txt`|tail-1 | cut-f1内容是上面提到的完整路径。每个目录和子目录都包含具有不同扩展名的混合文件。我在pastebin上有一个结构示例(小规模):在这个示例中,它可以工作,但当文件太多(100k)时,我会得到错误:bash:/bin/du:参数列表太长,使用这种方法时有一个限制,我正在寻找解决方法。Hi@KamilCuk,这可能是一个愚蠢的后续操作,但您的解决方案给了我另一个错误:du:无法访问“./mnt/directory\u 1\r”:它没有添加这样的文件或目录,\r并将其添加到每个目录的末尾。我在网站上尝试了以下方法,但结果相同:xargs-I-d'\n'du-sch{}error:xargs:error closing file-您在运行
xargs
时编辑或删除了文件
du:invalid zero length file name
您的输入文件有空行。移除它们。
xargs -d'\n' du -sch < file_list.txt | tail -1 | cut -f 1