按文件名自动减去NetCDF文件

时间:2015-04-17 13:31:11

标签: bash shell sh netcdf nco

我有一个NetCDF文件目录,其名称格式如下:

foo_d1_t1.nc
foo_d1_t2.nc
foo_d1_t3.nc
foo_d1_t4.nc
foo_d2_t1.nc
foo_d2_t2.nc
foo_d2_t3.nc
foo_d2_t4.nc
...

其中“d”表示日期,“t”表示时间步。

文件包含自当天开始以来的累计值,我需要通过从t2减去t1,t2从t3减去t2,从t4减去t4,每个时间步长转换为平均速率。单独这可以通过ncdiff来实现,有一天它会是这样的:

cp foo_d1_t1.nc bar_d1_t1.nc     #t1 needs no modification
ncdiff foo_d1_t2.nc foo_d1_t1.nc bar_d1_t2.nc
ncdiff foo_d1_t3.nc foo_d1_t2.nc bar_d1_t3.nc
ncdiff foo_d1_t4.nc foo_d1_t3.nc bar_d1_t4.nc

任何人都可以协助使用shell脚本来自动执行目录中存在的所有日期吗?欢呼声。

1 个答案:

答案 0 :(得分:4)

的bash

# capture the files into an array
files=(*.nc)

# do something with the first one
echo cp "${files[0]}" "${files[0]/#foo/bar}"

# do stuff with the remaining ones
for ((i=1; i < ${#files[@]}; i++)); do
    echo ncdiff "${files[i]}" "${files[i-1]}" "${files[i]/#foo/bar}"
done

如果您满意,请删除“echo”