Ejecute la misma operación en varios pares de archivos con nombres similares

Ejecute la misma operación en varios pares de archivos con nombres similares

Así que busqué varios archivos de datos grandes que corresponden a la temperatura y el vapor en el formato tmp_information_about_dataset.file y vap_information_about_dataset.file.

Entonces, para cada archivo tmp_... hay un archivo vap_... correspondiente. Usaré ambos conjuntos de datos para realizar algunos cálculos y luego generaré un archivo de salida correspondiente en el formato out_information_about_dataset.file

Para que quede claro, cada par de archivos tmp/vap, después de la información sobre los conjuntos de datos (es decir, cualquier carácter después de tmp o vap) son idénticos, por lo que también querré que los caracteres posteriores outsean idénticos a la información sobre los conjuntos de datos de los que provienen. fue generado. p.ej

 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

¿Existe alguna forma de tomar todos los archivos del diccionario, realizar el cálculo en pares coincidentes y nombrar el archivo de salida con un nombre de archivo idéntico después de los primeros 3 caracteres?

Estaba pensando en algoMe gusta esta respuesta aquí funcionaríapero el hecho de que necesito usar dos archivos con el nombre correspondiente, a diferencia de cualquier archivo en el diccionario, y también quiero archivos de salida separados, me está desconcertando un poco.

Respuesta1

Primero, repita todos tmp_los archivos:

for file in tmp_*; do

luego, para cada tmp_archivo, puede obtener el vap_archivo correspondiente con vap${file#tmp}- primero, ${file#tmp}elimina el prefijo tmp (la variable en sí no se modifica), luego el resultado se concatena con vap.

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

información relacionada