Führen Sie die gleiche Operation für mehrere Dateipaare mit ähnlichen Namen aus

Führen Sie die gleiche Operation für mehrere Dateipaare mit ähnlichen Namen aus

Ich habe also mehrere große Datendateien, die Temperatur und Dampf entsprechen, in der Form tmp_information_about_dataset.file und vap_information_about_dataset.file

Für jede tmp_...-Datei gibt es also eine entsprechende vap_...-Datei. Ich werde beide Datensätze verwenden, um einige Berechnungen durchzuführen und dann eine entsprechende Ausgabedatei in der Form out_information_about_dataset.file zu generieren.

Nur um das klarzustellen: Bei jedem Paar von tmp/vap-Dateien sind die Informationen über die Datensätze (also alle Zeichen nach tmp oder vap) identisch. Daher möchte ich auch, dass die Zeichen danach outmit den Informationen über die Datensätze identisch sind, aus denen sie generiert wurden. Beispiel:

 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

Gibt es eine Möglichkeit, alle Dateien im Wörterbuch zu nehmen, die Berechnung an übereinstimmenden Paaren durchzuführen und die Ausgabedatei nach den ersten drei Zeichen mit einem identischen Dateinamen zu benennen?

Ich dachte etwasals ob diese Antwort hier funktionieren würdeaber die Tatsache, dass ich zwei Dateien mit entsprechendem Namen verwenden muss und nicht irgendeine Datei im Wörterbuch, und dass ich separate Ausgabedateien möchte, verwirrt mich ein wenig.

Antwort1

Iterieren Sie zunächst über alle tmp_Dateien:

for file in tmp_*; do

dann tmp_kann man für jede Datei die entsprechende vap_Datei mit abrufen vap${file#tmp}– zuerst ${file#tmp}wird das tmp-Präfix entfernt (die Variable selbst wird nicht geändert), dann wird das Ergebnis mit verkettet vap.

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

verwandte Informationen