历史:我有一个共享文件夹,可供系统的所有用户访问。每个人都声称他们没有太多使用。所以,我决定检查每个用户使用共享文件夹的数量。
我可以按du -sh <path/to/folder>
获得总使用量。但不是在个人用户级别。
我认为,我想要完成这件事太多了。可能,可能有直接的方法来完成这项工作。
如果有人问过类似的问题,请分享网址。
答案 0 :(得分:2)
这里有几个可能有用的功能
space() {
local user=$1
local space=0
local tmp=`mktemp`
find . -user $user -exec stat --printf="%s\n" {} \; 2>/dev/null >> $tmp
for size in `cat $tmp`; do ((space=space + size)); done
local humanized=`mb $space`
echo "`pwd` $user $humanized"
rm -f $tmp
}
mb() {
local orig=$1
if [[ $orig -gt $((2**20)) ]]; then
echo -n $(($orig / 2**20))
echo "mb"
else
echo -n $(($orig / 2**10))
echo "kb"
fi
}
将这些粘贴到shell中,然后在命令行上调用它,如
$space <user>
它会将所有文件大小打印到临时文件中,然后将它们全部添加。 mb函数使其具有人类可读性。当我运行它时,我得到了
/home/me me 377mb
与
相比du -sh .
399M .
非常接近;)