Bash
在 Bash 中計算幾種文件大小的總和
我有一個文件中的文件列表,
cache_temp
.在文件中
cache_temp
:/home/maildir/mydomain.com/een/new/1491397868.M395935P76076.nm1.mydomain.com,S=1740,W=1777 /home/maildir/mydomain.com/een/new/1485873821.M199286P14170.nm1.mydomain.com,S=440734,W=446889 /home/maildir/mydomain.com/td.pr/cur/1491397869.M704928P76257.nm1.mydomain.com,S=1742,W=1779:2,Sb /home/maildir/mydomain.com/td.pr/cur/1501571359.M552218P73116.nm1.mydomain.com,S=1687,W=1719:2,Sa /home/maildir/mydomain.com/td.pr/cur/1498562257.M153946P22434.nm1.mydomain.com,S=1684,W=1717:2,Sb
我有一個簡單的腳本來獲取文件的大小
cache_temp
:#!/bin/bash for i in `grep -v ^# ~/cache_temp | grep -v "dovecot.index.cache"`; do if [ -f "$i" ]; then size=$(du -sh "$i" | awk '{print $1}') echo $size fi done
我有一個文件大小列表:
4,0K 4,0K 4,0K 432K 4,0K
我如何計算它們的總和?
使用
stat
代替du
:#!/bin/bash for i in `grep -v ^# ~/cache_temp | grep -v "dovecot.index.cache"`; do [ -f "$i" ] && totalsize=$[totalsize + $(stat -c "%s" "$i")] done echo totalsize: $totalsize bytes
根據 du(1),有一個 -c 選項,其目的是產生總計。
% du -chs * /etc/passwd 92K ABOUT-NLS 196K NEWS 12K README 48K THANKS 8,0K TODO 4,0K /etc/passwd 360K total