shell 如何用find和du得到文件夹的总大小?

wtzytmuj  于 2023-02-24  发布在  Shell
关注(0)|答案(4)|浏览(178)

我试图用find和du得到名为“巴克”的目录的大小。
我这样做:find -name bak -type d -exec du -ch '{}' \;
但是它返回每个名为“巴克”的文件夹的大小,而不是总大小。
无论如何要拿到它们吗?谢谢:)

rqdpfwrv

rqdpfwrv1#

使用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版本支持它。

o75abkj4

o75abkj42#

如果有很多文件,使用-exec ... +可能会执行multiple times,并且您将得到多个小计。
另一种方法是通过管道传输find的结果:

find . -name bak -type d -print0 | du -ch --files0-from=-
k4ymrczo

k4ymrczo3#

请尝试du -hcs。在联机帮助页中:

-s, --summarize
      display only a total for each argument
wribegjk

wribegjk4#

du 提供 find 的结果:

du -shc $(find . -name bak -type d)

相关问题