我试图获取owncloud
目录的磁盘使用情况,但不包括名称/目录中包含字符串 nobackup 的文件和目录。
到目前为止,这是我的命令:
find . -type f -not -regex '.+?nobackup.*' -exec du -c {} +
但在云目录上使用时它给了我一个错误的总数,在测试目录上它工作得很好。
答案1
如果您使用 或find ... -exec COMMAND {} +
,find ... -print0 | xargs -0 COMMAND
或xargs
将find
构建一个文件名参数列表,长度不超过每个命令定义的缓冲区空间(由 限制ARG_MAX
)。如果缓冲区空间耗尽,每个命令都会将文件名参数列表传递给COMMAND
并开始创建新列表。该过程将根据需要重复多次,直到没有更多的文件名,此时,正在构建的文件名列表将被传递到COMMAND
最终时间。
因此,如果您不希望find
命令返回大量文件名
find . -type f -not -regex '.+?nobackup.*' -exec du -c {} +
可能就足够了。如果你是并且你的du
支持--files0-from
你可以使用,它直接--files0-from=-
读取空终止(认为意味着来自)files
stdin
du
-
stdin
find . -type f -not -regex '.+?nobackup.*' -print0 | du -c --files0-from=-
注意:--files0-from
未指定posix
,但应在最新gnu du
版本中进行扩展。如果您的实现省略了它,您很可能必须以某种方式循环结果find
并在循环中将总数相加。