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