我试图用find和du得到名为“巴克”的目录的大小。我这样做:find -name bak -type d -exec du -ch '{}' \;但是它返回每个名为“巴克”的文件夹的大小,而不是总大小。无论如何要拿到它们吗?谢谢:)
find -name bak -type d -exec du -ch '{}' \;
rqdpfwrv1#
使用xargs(1)代替-exec:
xargs(1)
-exec
find . -name bak -type d | xargs du -ch
-exec为找到的每个文件执行命令(请查看find(1)文档)。通过管道连接到xargs,可以聚合这些文件名,并且只运行du一次。您还可以执行以下操作:
find(1)
xargs
du
find -name bak -type d -exec du -ch '{}' \; +
如果您的find版本支持它。
find
o75abkj42#
如果有很多文件,使用-exec ... +可能会执行multiple times,并且您将得到多个小计。另一种方法是通过管道传输find的结果:
-exec ... +
find . -name bak -type d -print0 | du -ch --files0-from=-
k4ymrczo3#
请尝试du -hcs。在联机帮助页中:
du -hcs
-s, --summarize display only a total for each argument
wribegjk4#
向 du 提供 find 的结果:
du -shc $(find . -name bak -type d)
4条答案
按热度按时间rqdpfwrv1#
使用
xargs(1)
代替-exec
:-exec
为找到的每个文件执行命令(请查看find(1)
文档)。通过管道连接到xargs
,可以聚合这些文件名,并且只运行du
一次。您还可以执行以下操作:如果您的
find
版本支持它。o75abkj42#
如果有很多文件,使用
-exec ... +
可能会执行multiple times,并且您将得到多个小计。另一种方法是通过管道传输find的结果:
k4ymrczo3#
请尝试
du -hcs
。在联机帮助页中:wribegjk4#
向 du 提供 find 的结果: