대량 파일 이름을 변경하시겠습니까?

대량 파일 이름을 변경하시겠습니까?

해당 sac 파일 이름의 순서를 변경하는 방법에 대한 문제가 있습니다. 제 말은 이 순서가 있지만 두 번째 순서로 변경해야 하고 해당 명령이 스크립트에 있어야 한다는 뜻입니다. 또한 이 변경은 열 번호를 사용하여 수행되어야 합니다.

오래된

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명령문 앞의 에코를 제거할 수 있습니다.

관련 정보