Execute a mesma operação em vários pares de arquivos com nomes semelhantes

2

Então eu tenho vários arquivos de dados grandes que correspondem a temperatura e vapor no formato tmp_information_about_dataset.file e vap_information_about_dataset.file

Portanto, para cada arquivo tmp _... existe um arquivo vap _... correspondente, usarei os dois conjuntos de dados para executar alguns cálculos e, em seguida, gerei um arquivo de saída correspondente no formulário out_information_about_dataset.file

Só para ficar claro, cada par de arquivos tmp / vap, após informações sobre os conjuntos de dados (ou seja, qualquer caractere após tmp ou vap) é idêntico, então também desejo que os caracteres após out sejam idênticos às informações sobre os conjuntos de dados a partir dos quais foi gerado. eg

 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 uma maneira pela qual eu sou capaz de pegar todos os arquivos no dicionário, executar o cálculo em pares correspondentes e nomear o arquivo de saída com um nome de arquivo idêntico após os 3 primeiros caracteres?

Eu estava pensando em algo como esta resposta aqui funcionaria mas o fato de eu precisar usar dois arquivos com nome correspondente, ao contrário de qualquer arquivo no dicionário, bem como arquivos de saída separados, está me jogando fora um pouco.

    
por Maitiu 06.07.2017 / 12:29

1 resposta

2

Primeiro, repita todos os arquivos tmp_ :

for file in tmp_*; do

então, para cada arquivo tmp_ , você pode obter o arquivo vap_ correspondente com vap${file#tmp} - primeiro, ${file#tmp} remove o prefixo tmp (a variável em si não é modificada), então o resultado é concatenado com vap .

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