我怎样才能 select 只有长列表中的特定 .nc 文件才能与 cdo 一起使用?
how can I select only specific .nc files from long list to work with cdo?
如何才能仅合并特定的 .nc 文件以用于 cdo
?
从一长串看起来像这样的文件中:
var_1-2.nc
var_3-4.nc
var_5-6.nc
.
.
var_99-100.nc
我只想 cdo 合并时间到最后一个文件,例如 10 个文件
任何人都可以帮助我了解这里的语法吗?
CDO 可以接受通配符。根据您所说的,以下应该有效:
cdo mergetime var_99*.nc out.nc
此问题的正确语法是:
cdo mergetime $(ls | tail -n 10) outfile.nc
只是添加到 Rob 的回答中,这样做可能更可靠
cdo mergetime var_9?-*.nc out.nc
?
只能由单个字符替换,因此这将选取所有 90 年代的文件但忽略 var9-10.nc
当然,如果您只想要最后 7 个文件,那么这将不起作用,您的 tail
解决方案更好。
正如 Rob 在他的评论中提到的,通常在生成文件名索引时用零填充它们是个好主意,这样像 ls
这样的列表命令将以正确的数字顺序给出它们 - 你例如,可以使用 seq -w i1 i2
来做到这一点。
如何才能仅合并特定的 .nc 文件以用于 cdo
?
从一长串看起来像这样的文件中:
var_1-2.nc
var_3-4.nc
var_5-6.nc
.
.
var_99-100.nc
我只想 cdo 合并时间到最后一个文件,例如 10 个文件 任何人都可以帮助我了解这里的语法吗?
CDO 可以接受通配符。根据您所说的,以下应该有效:
cdo mergetime var_99*.nc out.nc
此问题的正确语法是:
cdo mergetime $(ls | tail -n 10) outfile.nc
只是添加到 Rob 的回答中,这样做可能更可靠
cdo mergetime var_9?-*.nc out.nc
?
只能由单个字符替换,因此这将选取所有 90 年代的文件但忽略 var9-10.nc
当然,如果您只想要最后 7 个文件,那么这将不起作用,您的 tail
解决方案更好。
正如 Rob 在他的评论中提到的,通常在生成文件名索引时用零填充它们是个好主意,这样像 ls
这样的列表命令将以正确的数字顺序给出它们 - 你例如,可以使用 seq -w i1 i2
来做到这一点。