多个用户共享目录的总使用量 - LINUX

时间:2017-03-05 18:59:05

标签: linux shell directory

我试图获取共享文件夹在多个用户中使用的总字节数。

我在一个更大的剧本中得到了这个:

cd /home/user1/SharedFolder/
echo "Total for user1 : "
ls -lrt | awk '{ Total1 += $5 }; END { print Total1 " bytes"}'

cd /home/user2/SharedFolder/
echo "Total for user2 : "
ls -lrt | awk '{ Total2 += $5 }; END { print Total2 " bytes"}'

这允许我单独查看每个文件夹中可用的字节。我不确定这是否是获得理想结果的正确方法。

我遇到的问题是从包含该文件夹的所有用户获取金额(用户数可能会有所不同)

我使用Linux相当新,任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

第一课是为作业使用正确的工具:要计算目录中所有文件的大小,请使用du。另外,don't parse ls

# variable "homeDirs" will be an associative array
declare -A homeDirs

# read the /etc/passwd file, and map each user to the home directory
while IFS=: read -ra entry; do
    homeDirs["${entry[0]}"]="${entry[5]}"
done < /etc/passwd

# loop over all the users
for user in "${!homeDirs[@]}"; do
    dir="${homeDirs[$user]}/SharedFolder"
    # if that user has a shared folder
    if [[ -d "$dir" ]]; then
        # find the total size
        totalSize=$(du -sb "$dir" | awk '{print $1}')
        # and output the information
        printf "Total for user %s: %d\n" "$user" "$totalSize"
    fi
done