如何批量将NC文件中的thetao变量追加至同日期对应NC文件?
批量NetCDF文件变量追加解决方案
核心问题解决点
- 精准配对文件:解决原脚本全量循环导致的交叉追加问题,通过文件名替换实现同日期TEMP/RFVL文件一对一匹配
- 自动完成追加确认:无需手动输入
a,利用ncks内置参数直接启用追加模式
最终脚本
#!/bin/bash # 遍历所有带TEMP标识的NetCDF文件 for temp_file in *TEMP*.nc; do # 将文件名中的TEMP替换为RFVL,定位对应目标文件 rfvl_file="${temp_file/TEMP/RFVL}" # 检查目标文件是否存在,避免无效操作 if [ -f "$rfvl_file" ]; then # 使用ncks的-A参数直接追加变量(无需交互确认) ncks -A -v thetao "$temp_file" "$rfvl_file" echo "处理完成:$temp_file → $rfvl_file" else echo "警告:未找到与$temp_file对应的RFVL文件" fi done
关键说明
- 文件名配对逻辑:
${temp_file/TEMP/RFVL}是Bash原生字符串替换语法,根据你提供的命名规则(仅中间4位标识不同),可精准定位同日期的目标文件 - 自动追加参数:ncks的
-A选项直接指定追加模式,跳过交互确认步骤,比管道输入echo 'a'更稳定可靠 - 安全校验:加入
[ -f "$rfvl_file" ]检查,避免因文件缺失导致的命令报错
操作建议
- 执行脚本前,先备份所有RFVL文件,防止操作失误丢失原始数据
- 确保系统已安装NCO工具包(ncks是其中工具),若未安装可通过包管理器(如apt、yum、brew)安装
内容的提问来源于stack exchange,提问作者Yotam Ben Saadon
相关产品推荐
相关产品推荐

