我已经意识到,我可以在我的终端中使用命令ncks将我需要的变量(温度)从一个.nc文件传输到另一个具有相同 struct 的文件,但它具有当前数据(uo,vo),而不是温度.我的问题是,我如何创建一个循环,从每个温度.nc文件中获取温度变量,并将其传输到相同日期的海流数据?
我已经try 创建以下脚本,虽然我是编程初学者,但我很清楚它可能是非常错误的,但这是我要追求的逻辑
for filei in $(ls *TEMP-MFSe3r1-MED-b20200901_re-sv01.00.nc) ; do
for filej in $(ls *RFVL-MFSe3r1-MED-b20200901_re-sv01.00.nc) ; do
ncks -v thetao $filei $filej
done
done
我写的代码没有达到我想要的目的.虽然我希望代码获取每个*temp netcdf文件,从中获取温度变量并将其附加到等效的RFVL文件,但它所做的是运行循环太多次,并try 将该温度变量附加到所有*RFVL文件.此外,我意识到我从未指定我的文件的名称,以下是一个示例:
20130701_d-CMCC--RFVL-MFSe3r1-MED-b20200901_re-sv01.00_crop.nc
20130701_d-CMCC--TEMP-MFSe3r1-MED-b20200901_re-sv01.00_crop.nc
我想要循环的有问题的命令是:
ncks -v thetao *TEMP*.nc *RFVL*.nc
也就是说,它从*TEMP*.nc
文件中获取thetao变量,并将其附加到*RFVL*.nc
文件中,唯一的小问题是,在我执行此命令后,它会询问我:
ncks: 20130701_d-CMCC--RFVL-MFSe3r1-MED-b20200901_re-sv01.00_crop.nc exists---'e'xit, 'o'verwrite (i.e., clobber existing file), or 'a'ppend (i.e., replace duplicate variables in, and add metadata and new variables to, existing file) (e/o/a)?
个
为了知道我希望如何继续,我的回答是:a
,但我更愿意找到一种方法,也可以从命令本身自动执行,这样它就不会每次都问我.
只是为了澄清一下,我正在处理的两组文件的名称完全相同,只是中间的4个字母表示文件中存储的数据类型.
如果有人有更好的建议,我基本上想要做的是从每个*TEMP文件中,其中包括变量thetao,潜在热量的变量,我想将该变量附加到等效的(同一天)*RFVL文件,以便创建一个包含温度和海流数据的netcdf文件列表(我有每种类型的60个文件)
我对未完成的问题表示歉意,这是我第一次在堆栈溢出上发帖.