汇总特定用户所有权下的文件总大小

时间:2014-08-19 11:41:24

标签: bash find file-ownership

我想总结所有文件的大小(递归),这些文件属于特定用户的所有权。虽然,我不想拥有所有目录的庞大列表,只需要整体大小。

因此来自this answer的解决方案如下:

find . -user BobTheCat -type d -exec du -hs {} \;

必须修改,但如何?

我知道使用像awk这样的后处理是可能的,但我想这可以做得更直接。

2 个答案:

答案 0 :(得分:3)

如果find附带-printf,请使用该$ find . -user BobTheCat -type f -printf '%s\n' | awk '{bytes+=$0}END{print bytes}' 。 E.g:

{{1}}

答案 1 :(得分:1)

试试这个:

find . -user BobTheCat -type d -exec du -shc {} + -prune | egrep '^total\b'

-prune阻止find递归到目录,因为du -s已经这样做了,并且会导致多次计算每个子目录。

-c的{​​{1}}选项告诉它在结尾打印总计,而du只打印该行。

如果您想要包含tail -1所有但不属于他所拥有的目录的文件,请从BobTheCat删除-type d