각 디렉토리에 여러 파일이 있는 아래와 같은 디렉토리가 많이 있습니다.
.
├── 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+).......