我运行此命令查找昨天修改的每个文件:
find /eqtynas/ -type f -mtime -1 > /home/writtenToStorage.20171026 &
然后开发此脚本以添加脚本收集的所有文件,并将大小相加。 。
#!/bin/bash
ydate=$(date +%Y%m%d --date="yesterday")
file="/home/writtenToStorage.$ydate"
fileSize=0
for line in $(cat $file)
do
if [ -f $line ] && [ -s $line ] ; then
fileSize1=$fileSize
fileSize=$(wc -c < $line)
Total=$(( $fileSize + $fileSize1 ))
fi
done
echo $Total
然而,当我只列出列表中的一个文件时它出现在18942,其中所有文件的总和在34499处出现。
wc -c /eqty/fixed
18942 /eqty/fixed
脚本是否正常 - 因为我运行了另一项检查,总大小为314 gigs
find / eqtynas / -type f -mtime -1 -print0 | du -ch --files0-from = - --total -s&gt; 24小时使用.20171026&amp;
答案 0 :(得分:2)
继续发表评论,您可能更喜欢类似的内容:
sum=
while read -r sz; do
sum=$((sum + sz))
done < <(find /eqtynas/ -type f -mtime -1 -exec stat -c %s '{}' \; )
echo "sum: $sum"
有很多方法可以做到这一点。您还可以将-exec ls -al '{}'
的结果传递给awk
,并将第5个字段汇总。
如果您已将文件名写入/home/writtenToStorage.20171026
,则可以将文件重定向到while
循环,例如
while read -r sz; do
sum=$((sum + sz))
done <"/home/writtenToStorage.20171026"
仔细看看,让我知道你有任何问题。
答案 1 :(得分:0)
您没有添加到Total
,您只需将其设置为最后两个文件的大小总和。
for line in $(cat $file)
do
if [ -f $line ] && [ -s $line ] ; then
fileSize=$(wc -c < $line)
((Total += fileSize))
fi
done