查找不包括包含字符串的文件的总磁盘使用量

查找不包括包含字符串的文件的总磁盘使用量

我试图获取owncloud目录的磁盘使用情况,但不包括名称/目录中包含字符串 nobackup 的文件和目录。

到目前为止,这是我的命令:

find . -type f -not -regex '.+?nobackup.*'  -exec du -c {} +  

但在云目录上使用时它给了我一个错误的总数,在测试目录上它工作得很好。

答案1

如果您使用 或find ... -exec COMMAND {} +find ... -print0 | xargs -0 COMMANDxargsfind构建一个文件名参数列表,长度不超过每个命令定义的缓冲区空间(由 限制ARG_MAX)。如果缓冲区空间耗尽,每个命令都会将文件名参数列表传递给COMMAND并开始创建新列表。该过程将根据需要重复多次,直到没有更多的文件名,此时,正在构建的文件名列表将被传递到COMMAND最终时间。

因此,如果您不希望find命令返回大量文件名

find . -type f -not -regex '.+?nobackup.*' -exec du -c {} +  

可能就足够了。如果你是并且你的du支持--files0-from你可以使用,它直接--files0-from=-读取空终止(认为意味着来自)filesstdindu-stdin

find . -type f -not -regex '.+?nobackup.*' -print0 | du -c --files0-from=-

注意:--files0-from未指定posix,但应在最新gnu du版本中进行扩展。如果您的实现省略了它,您很可能必须以某种方式循环结果find并在循环中将总数相加。

相关内容