Ich habe ein Problem damit, wie ich die Reihenfolge der SAC-Dateinamen ändern kann. Ich meine, ich habe diese Reihenfolge, aber ich muss sie in die zweite ändern, und diese Befehle sollten im Skript enthalten sein. Außerdem muss diese Änderung mithilfe von Spaltennummern erfolgen.
ALT
2007.084.00.22.50.8930_2007.084.01.26.10.1430.GE.ISP..BHZ.D.SAC
2007.084.00.22.51.2930_2007.084.01.26.54.8430.GE.ISP..BHN.D.SAC
2007.084.00.25.42.9430_2007.084.01.27.59.2430.GE.ISP..BHE.D.SAC
NEU
2007.084.01.26.10.1430_2007.084.00.22.50.8930.GE.ISP..BHZ.D.SAC
2007.084.01.26.54.8430_2007.084.00.22.51.2930.GE.ISP..BHN.D.SAC
2007.084.01.27.59.2430_2007.084.00.25.42.9430.GE.ISP..BHE.D.SAC
Lassen Sie mich den Code schreiben, den ich auf diese Weise fertigstellen möchte (wenn die Antworten auf diese Weise lauten, wäre das für mich hilfreicher) und ich weiß nicht, wie ich diesen Vorgang weiter abschließen kann.
#!/bin/bash
for sacfile in *SAC
do
echo $sacfile
n2=`echo $sacfile | cut -c 24-45`
echo $n2
done
Antwort1
Vorausgesetzt, es handelt sich um Dateinamen mit fester Länge, sollte dies funktionieren.
#!/bin/bash
for sacfile in *SAC
do
new_sacfile=${sacfile:23:22}_${sacfile:0:22}${sacfile:45}
echo mv -v ${sacfile} ${new_sacfile}
done
Wir verwendenBashs eingebaute Variablenmanipulationum den Dateinamen zu zerschneiden und nach unseren Wünschen neu anzuordnen. Wenn Sie zufrieden sind, können Sie das Echo vor der mv
Anweisung entfernen