파일 이름에서 문자열을 제거하고 BASH에 다른 문자열을 유지합니다.

파일 이름에서 문자열을 제거하고 BASH에 다른 문자열을 유지합니다.

다음과 같은 파일이 많이 있습니다.

2007.365.00.00.00.0000.9A.CVSV4..HHZ.D.SAC.GAP.decim10.GAP

결국 내가 원하는 것은 이것이다.

2007.365.00.00.CVSV4.HHZ.SAC

나는 이것을 시도했습니다 :

for file in /home/joana/Desktop/*GAP; do
mv "$file" `echo "$file" | sed -e 's/00.0000.9A.//' -e 's/.D//' -e 's/.GAP.decim10.GAP//'`;
done

안다, 나는 이해합니다:

mv: cannot move ‘/home/joana/Desktop/2007.365.00.00.00.0000.9A.CVSV4..HHZ.D.SAC.GAP.decim10.GAP’ to ‘/home/joanaesktop/2007.365.00.00.CVSV4..HHZ.D.SAC’: No such file or directory

누구든지 나를 도와줄 수 있나요? 많은 예를 보았지만 아마도 뭔가 잘못하고 있는 것 같습니다.

답변1

출력에 만족하면 에코를 제거하십시오(mv 이전).

 for file in *GAP 
    do 
        NEW_FILE=$(echo ${file} | awk -F. '{print $1,$2,$3,$4,$8,$10,$12}' OFS=.)
        echo mv ${file} ${NEW_FILE}
     done

관련 정보