在循环

时间:2017-02-26 07:06:55

标签: bash for-loop

我有很多文件,我需要通过知道第一个文件名来确定其中有多少文件适合4Tb驱动器。名称模式为001j00_rf_geo_????$seqn,末尾带有连续的3位数字。假设我从001j00_rf_geo_????100开始。

block=4000000000000
shopt -s dotglob
seqn="100"
size=`stat -c%s 001j00_rf_geo_????$seqn`
for (( i=$size ;i < $block ; seqn++ ))
    do
    ((size+=$(stat -c%s 001j00_rf_geo_????$seqn)))
done
echo $size

我很确定for循环中的总结部分是错误的。我只是想知道如何在代码中获得具有循环部分的文件的总大小。

1 个答案:

答案 0 :(得分:0)

查看您的for循环,您根本没有使用'i' - 它是不需要的。如果你想使用C风格的for循环,你可以简单地省略初始化器:

for ((; size < block; seqn++))
do

或使用while循环代替

while ((size < block))
do
    ... 
    ((seqn++))
done

当然,您也可以将初始化移动到for循环并摆脱上面的那个

for ((seqn = 100; size < block; seqn++))
do

如果您还有其他问题,请尝试并告诉我。