.datファイルがたくさんありますが、これを.sacファイル(一種の地震計ファイル)に変換したいと思います。 xy2sacプログラムを使用してファイルを変換しましたが(コードを作成しませんでした)、変換されたファイルに新しい名前を付ける必要がありました。
コンバータコードは次のように動作します。
xy2sac filename.dat newfilename.sac
私がやりたいことは、xy2sacプログラムがループで動作している間に新しいファイル名を指定することです。たとえば、私のdatファイル名は次のようになります。
BRGA_KO_disp_post_mij_conv0000_E.dat
BRGA_KO_disp_post_mij_conv0000_E.dat
BRGA_KO_disp_post_mij_conv0000_N.dat
BRGA_KO_disp_post_mij_conv0000_Z.dat
GADA_KO_disp_post_mij_conv0000_E.dat
GADA_KO_disp_post_mij_conv0000_N.dat
GADA_KO_disp_post_mij_conv0000_Z.dat
HYBL_KO_disp_post_mij_conv0000_E.dat
HYBL_KO_disp_post_mij_conv0000_N.dat
HYBL_KO_disp_post_mij_conv0000_Z.dat
ISK_KO_disp_post_mij_conv0000_E.dat
ISK_KO_disp_post_mij_conv0000_N.dat
ISK_KO_disp_post_mij_conv0000_Z.dat
TUZL_KO_disp_post_mij_conv0000_E.dat
TUZL_KO_disp_post_mij_conv0000_N.dat
TUZL_KO_disp_post_mij_conv0000_Z.dat
名前を次に変更したいです。
BRGA_KO__E.sac
BRGA_KO__E.sac
BRGA_KO__N.sac
BRGA_KO__Z.sac
GADA_KO__E.sac
GADA_KO__N.sac
GADA_KO__Z.sac
HYBL_KO__E.sac
HYBL_KO__N.sac
HYBL_KO__Z.sac
ISK_KO__E.sac
ISK_KO__N.sac
ISK_KO__Z.sac
TUZL_KO__E.sac
TUZL_KO__N.sac
TUZL_KO__Z.sac
だから.datの前の最初の8文字と最後の文字を選択したいと思います。
どうすればいいですか?
このループを使用しましたが、うまくいかず、最終的に.datファイル拡張子ができました。
foreach file (`ls *.dat*`)
xy2sac *.dat *.sac << END
END
end
よろしくお願いします。
ベストアンサー1
csh
より正常なシェルに変更:s
できない場合
前任者。
#!/bin/csh -f
foreach file ( *.dat )
echo xy2sac $file $file:s/disp_post_mij_conv0000//:s/.dat/.sac/
end
echo
ファイル名が正しいと確信している場合は、削除してください。