我试图获取共享文件夹在多个用户中使用的总字节数。
我在一个更大的剧本中得到了这个:
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相当新,任何帮助将不胜感激。谢谢。
答案 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