对多对具有相似名称的文件执行相同的操作

对多对具有相似名称的文件执行相同的操作

所以我有几个与温度和蒸汽相对应的大数据文件,格式为 tmp_information_about_dataset.file 和 vap_information_about_dataset.file

因此,对于每个 tmp_... 文件都有一个相应的 vap_... 文件,我将使用这两个数据集执行一些计算,然后以 out_information_about_dataset.file 的形式生成相应的输出文件

需要明确的是,每对 tmp/vap 文件在有关数据集的信息(即 tmp 或 vap 之后的任何字符)之后都是相同的,因此我还希望后面的字符与out有关其来源的数据集的信息相同被生成。例如

 tmp_123ABC456_model1_2010.nc
 vap_123ABC456_model1_2010.nc
 out_123ABC456_model1_2010.nc

 tmp_123CDF_model2_2010.nc
 vap_123CDF_model2_2010.nc
 out_123CDF_model2_2010.nc

有没有一种方法可以获取字典中的所有文件,对匹配对执行计算,并在前 3 个字符后使用相同的文件名命名输出文件?

我在想什么就像这里的答案会起作用但事实上我需要使用两个具有相应名称的文件,而不是字典中的任何文件,并且需要单独的输出文件,这让我有点失望。

答案1

首先,迭代所有tmp_文件:

for file in tmp_*; do

那么对于每个tmp_文件,可以先用 -得到对应的vap_文件,去掉 tmp 前缀(变量本身不被修改),然后将结果用.vap${file#tmp}${file#tmp}vap

for file in tmp_*; do ./process_stuff "${file}" "vap${file#tmp}" > "out${file#tmp}"; done

相关内容