類似した名前を持つ複数のファイルペアに対して同じ操作を実行する

類似した名前を持つ複数のファイルペアに対して同じ操作を実行する

そこで、温度と蒸気に対応する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 文字にちなんで同一のファイル名を出力ファイルに付ける方法はありますか?

私は何か考えていたこの答えがうまくいくようにしかし、辞書内の任意のファイルではなく、対応する名前を持つ 2 つのファイルを使用する必要があり、また別々の出力ファイルが必要であるという事実は、私を少し困惑させています。

答え1

まず、すべてのtmp_ファイルを反復処理します。

for file in tmp_*; do

次に、各ファイルについて、 -でtmp_対応するファイルを取得できます。まず、tmp プレフィックスを削除します (変数自体は変更されません)。次に、結果が と連結されます。vap_vap${file#tmp}${file#tmp}vap

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

関連情報