2017-03-05 8 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

関連する問題