使用find&获取文件夹的总大小杜

时间:2012-03-20 20:56:32

标签: bash shell debian

我正在尝试使用find和du来获取名为“bak”的目录的大小。

我这样做:find -name bak -type d -exec du -ch '{}' \;

但它返回名为“bak”的每个文件夹的大小而不是总数。

无论如何要得到它们?谢谢:))

4 个答案:

答案 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=-