Bash 按文件名自动减去NetCDF文件

Bash 按文件名自动减去NetCDF文件,bash,shell,sh,netcdf,nco,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,从t3中减去t2,从t4中减去t3,将其转换为每个时间步的平均速率。单独而言,这可以通过ncdiff实现,在一天内,它将如下所示:

我有一个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,从t3中减去t2,从t4中减去t3,将其转换为每个时间步的平均速率。单独而言,这可以通过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脚本来帮助在目录中的所有日期自动执行此操作吗?干杯。

狂欢节

# 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
#将文件捕获到数组中
文件=(*.nc)
#用第一个做点什么
echo cp“${files[0]}”“${files[0]/#foo/bar}”
#用剩下的做些事情
对于((i=1;i<${文件[@]};i++);做
echo ncdiff“${files[i]}”“${files[i-1]}”“${files[i]/#foo/bar}”
完成
如果您满意,请删除“echo”

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
#将文件捕获到数组中
文件=(*.nc)
#用第一个做点什么
echo cp“${files[0]}”“${files[0]/#foo/bar}”
#用剩下的做些事情
对于((i=1;i<${文件[@]};i++);做
echo ncdiff“${files[i]}”“${files[i-1]}”“${files[i]/#foo/bar}”
完成
如果您满意,请删除“echo”