Выполнить одну и ту же операцию для нескольких пар файлов с похожими именами

Выполнить одну и ту же операцию для нескольких пар файлов с похожими именами

Итак, у меня есть несколько больших файлов данных, которые соответствуют температуре и пару в форме 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_файл с помощью vap${file#tmp}- сначала ${file#tmp}удаляется префикс tmp (сама переменная не изменяется), затем результат объединяется с vap.

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

Связанный контент