다른 폴더의 파일 이름 바꾸기

다른 폴더의 파일 이름 바꾸기

각 디렉토리에 여러 파일이 있는 아래와 같은 디렉토리가 많이 있습니다.

.
 ├── 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+).......

관련 정보