各ディレクトリに複数のファイルがある以下のディレクトリがたくさんあります。
.
├── 20150320
├── 20150321
├── 20150322
├── 20150323
├── 20150324
├── 20150325
...
その後、各ディレクトリの各ファイルを繰り返し、ファイルを別の形式に変換する小さなスクリプトを作成しました。たとえば、次のようになります。
#!/bin/sh
path="/home/juve/Projectes/leon_CC"
echo "SAC conversion"
for folder in $path/*/; do
cd $folder
Files=*BHZ
for f in *BHZ; do
/opt/mseed2sac-2.3/mseed2sac -v -C HHZ $f
rm -r $f
done
done
変換は変更したいファイル名を 。形式で出力します
CA.UTG2..HHZ.D.2015.080.225956.SAC
。必要なのは、2015.080.225956.UTG2.HHZ.SAC
ファイル拡張子がある場所に名前を変更することです。SAC
私はrename-perl
これを使用しています。これまで、私はさまざまな成功を収め、次の方法を使用しました。
rename -n 's/.{3}(.*)/$1/'
これを生成することはUTG2..BHZ.D.2015.080.225956.SAC
私に必要なものの一部です。
試行するとrename -n 's/(.+)(.+)(.+)(.+)(.+)(.+)(.+)(\.SAC)/$4$5$6$1$2'
エラーが発生します。Substitution replacement not terminated at line 1, in:
どんなアドバイスも本当にありがとうございます。
編集:答えが見つかりました。
rename -n 's/(.+)\.(.+)\.(.+)\.(.+)\.(.+)\.(.+)\.(.+)(\.SAC)/$5.$6.$7.$2$3$8/'
すべてのコメントをお寄せいただきありがとうございます。
答え1
最後を逃した/:
rename -n 's/(.+)(.+)(.+)(.+)(.+)(.+)(.+)(\.SAC)/$4$5$6$1$2/' CA.UTG2..HHZ.D.2015.080.225956.SAC
# ^
次の正規表現が必要です。
(\d+)\.(\d+)\.(\d+).......