我怎样才能从文件名中提取一个下划线分隔的字段?

How can I just extract one underbar-separated field from a filename?

我有一个这样的文件名列表:

REG_2016120200hourly_d01_20161202_00_00_00.nc

我想提取这个名字并放入一个变量中:

1)日期 20161202

    for file in /path/*;
    do
     filename=$(basename -- "$file")
     date=${filename:4:8}
     echo $date
    done

这是有效的,脚本给了我 20161202 我不知道为什么

2)时间步长 00

我需要取前两个零 00,我正在尝试

timestep=${filename:34:36}但这行不通。

我有点惊讶,因为我在其他脚本中使用了相同的方法,而且我从来没有遇到过问题。

谢谢

timestep="${filename:34:2}"

2是长度。


来自man bash

${parameter:offset:length}: Substring Expansion. Expands to up to length characters of the value of parameter starting at the character specified by offset. [...]