배치 파일 이름을 변경하시겠습니까?

배치 파일 이름을 변경하시겠습니까?

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

관련 정보