按用户在Red Hat FS中的共享文件夹上使用分组

时间:2017-07-07 15:14:35

标签: bash shell unix

历史:我有一个共享文件夹,可供系统的所有用户访问。每个人都声称他们没有太多使用。所以,我决定检查每个用户使用共享文件夹的数量。

我可以按du -sh <path/to/folder>获得总使用量。但不是在个人用户级别。

我认为,我想要完成这件事太多了。可能,可能有直接的方法来完成这项工作。

如果有人问过类似的问题,请分享网址。

1 个答案:

答案 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    . 

非常接近;)