2017-03-05 61 views
0

我想获得由多个用户共享文件夹中使用的总字节数。在多个用户共享目录的总用量 - LINUX

我有一个较大的脚本中得到这个:

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

第一课是要用于工作的工具:计数的所有文件的大小,在一个目录,使用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 
+0

谢谢你,这是完美的!我仍然习惯于所有的工具和功能,这真的很有帮助。 – HenryBeans159