對多對具有相似名稱的檔案執行相同的操作

對多對具有相似名稱的檔案執行相同的操作

所以我有幾個與溫度和蒸汽相對應的大數據文件,格式為 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

相關內容