我有一个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脚本来自动执行目录中存在的所有日期吗?欢呼声。
答案 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”