大量のファイル名を変更しますか?

大量のファイル名を変更しますか?

その 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ファイル名を切り分けて、希望通りに並べ替えます。満足したら、ステートメントの前のechoを削除します。

関連情報