我正在尝试使用find和du来获取名为“bak”的目录的大小。
我这样做:find -name bak -type d -exec du -ch '{}' \;
但它返回名为“bak”的每个文件夹的大小而不是总数。
无论如何要得到它们?谢谢:))
答案 0 :(得分:22)
使用xargs(1)
代替-exec
:
find . -name bak -type d | xargs du -ch
-exec
对找到的每个文件执行命令(查看find(1)
文档)。管道到xargs
可以汇总这些文件名,只运行一次du
。你也可以这样做:
find -name bak -type d -exec du -ch '{}' \; +
如果您的find
版本支持它。
答案 1 :(得分:4)
试试du -hcs
。从联机帮助页:
-s, --summarize
display only a total for each argument
答案 2 :(得分:2)
Feed du,结果为:
du -shc $(find . -name bak -type d)
答案 3 :(得分:0)
如果文件很多,则可以使用multiple times执行-exec ... +
,您将获得多个小计。
另一种方法是通过管道传递find的结果:
find . -name bak -type d -print0 | du -ch --files0-from=-