このsacでファイル名の順序を変更する方法について質問があります。私はこのコマンドがありますが、2番目のコマンドに変更する必要があり、そのコマンドがスクリプトに存在する必要があることを意味します。また、この変更は列番号を使用して行う必要があります。
古い
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
新しい
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
このようにして達成したいコードを書きましょう(答えがこれであればもっと役に立ちます)。このプロセスをどのように進めるべきかわかりません。
#!/bin/bash
for sacfile in *SAC
do
echo $sacfile
n2=`echo $sacfile | cut -c 24-45`
echo $n2
done
ベストアンサー1
固定長のファイル名であると仮定すると、これは機能します。
#!/bin/bash
for sacfile in *SAC
do
new_sacfile=${sacfile:23:22}_${sacfile:0:22}${sacfile:45}
echo mv -v ${sacfile} ${new_sacfile}
done
私たちは使用していますBashの組み込み変数の操作ファイル名を切り取り、必要に応じて並べ替えます。満足すれば、mv
ステートメントの前のエコーを削除できます。