我想总结特定用户所有权下的所有文件的大小(递归(。不过,我不想拥有所有目录的庞大列表,只是整体大小。
因此,此答案的解决方案如下:
find . -user BobTheCat -type d -exec du -hs {} ;
必须修改,但如何修改?
我知道用awk之类的东西进行后处理是可能的,但我想这可以更直接地完成。
如果您的find
附带-printf
,请使用它。 例如:
$ find . -user BobTheCat -type f -printf '%sn' | awk '{bytes+=$0}END{print bytes}'
试试这个:
find . -user BobTheCat -type d -exec du -shc {} + -prune | egrep '^totalb'
-prune
可防止find
递归到目录中,因为du -s
已经这样做了,并且会导致对每个子目录进行多次计数。
du
-c
选项告诉它在末尾打印总计,tail -1
只打印该行。
如果要包含 BobTheCat
拥有但不在他拥有的目录中的文件,请从 find
中删除-type d
。