2017-05-07 2 views
0

Ich habe mehrere Neustarts einiger meiner Simulationen. Die Anzahl der Neustarts variiert von Fall zu Fall. Für die Nachbearbeitung muss ich die Ausgabe all dieser Neustarts in einzelne Dateien kombinieren, die ich analysieren kann. Meine Namenskonvention für die Läufe/Neustarts ist einfach. Zum Beispiel für run101 würde meine Neustarts genannt run101r1, run101r2 usw.Verbinden von Dateien aus mehreren Verzeichnissen Bash

ich kam mit dieser Bash-Skript auf:

vars=(a b c d e f) 
runname=$1 
for i in ${vars[*]}; do 
echo 'Combining movies for ' $i 
cat $runname/staging/movie.$i.000 $runname\r1/staging/movie.$i.001 > ./$i 
done 

Das einzige Problem ist, dass eine unterschiedliche Anzahl von Neustarts für verschiedene Läufe gegeben, ich Ändern Sie derzeit manuell die vorletzte Zeile für jeden Lauf. Gibt es eine Möglichkeit, die zweite letzte Zeile in einer Schleife sowie zu machen, so dass ich einfach das Skript aufrufen als:

>combine_movies.sh run101 n 

wobei n die Anzahl der Neustarts ist?

Antwort

0

Nach einigen Experimenten konnte ich eine Zeichenfolge erstellen und diese Zeichenfolge auswerten. Hier ist das endgültige Skript:

vars=(a b c d e f) 
for i in ${vars[*]}; do 
    a="cat $1/staging/movie.$i.000 " 
    for j in $(seq 1 $2); do 
    a="$a $1r$j/staging/movie.$i.00$j " 
    done 
    a="$a > ./$i" 
    echo $a 
    eval $a 
done 

Kann dies noch mehr aufgeräumt werden? Vielleicht, ein bisschen allgemeiner und narrensicher gemacht?

Verwandte Themen