使用bash命令“wc”

时间:2017-10-27 23:07:08

标签: bash find

我运行此命令查找昨天修改的每个文件:

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;

2 个答案:

答案 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