我正在使用此命令来查找所需的文件夹并计算大小。
find . -type d -name 'tmp_c*' | xargs du -hcs {} \; +
我的 find 版本不支持 -exec。但是,这个可以工作。但是我不确定它是否给出了包含我的搜索字符串的目录的正确总数。当我运行命令并连接到 less 时,我看到它计算每个文件夹的大小,然后不时地输出总数。像这样:
140K ./r/g/userid/attach/tmp_c_241091464_2
68K ./r/g/userid/attach/tmp_c_58367014_undefined
2.3G total
如果我将输出重定向到一个文件,然后 grep 总计,我会得到以下结果:
2.3G total
978M total
1.1G total
2.0G total
1.1G total
我思考这给了我正确的数字。但是,我如何才能更进一步地执行此命令,并使其在一行上汇总总计?
答案1
find . -type d -name 'tmp_c*' -print0 | du -hcs --files0-from -
这假设(足够新?)GNU 版本的find
和du
。
答案2
这应该可以工作,在我的 EL4 盒子上测试过...这是我拥有的最旧的盒子,让我感到畏缩,我不知道你如何使用 EL3。
find . -type d -name 'tmp_c*' -print0|xargs -0 du -c|tail -1
完成了coreutils-4.5.3-26
答案3
https://stackoverflow.com/a/1323769/799204
一种替代解决方案是使用 awk:
但脚本必须针对这种情况进行调整,请尝试
find . -type d -name 'tmp_c*' -print0 | xargs -0 du -s | awk 'BEGIN { sum=0 } { sum+=$1 } END { print sum }'
输出将以十进制形式显示
答案4
我检查了 epel 从 5 开始,而不是 3,所以唯一的选择是自定义脚本。
也可以安装 ncdu;
我一直在使用它,比任何自定义 bash 更容易、更快。 (可以浏览目录,节省大量时间)。