파일 Bash 스크립트 이름 바꾸기 - 루프 문제

파일 Bash 스크립트 이름 바꾸기 - 루프 문제

내 파일을 가져오고 이름을 바꾸는 스크립트를 작성하려고 합니다.PT-1도착하다포인트 2 예를 들어. 이제 스크립트는 testfile_pt-1_date.ts 파일의 이름을 올바르게 바꾸고 이를 지정된 폴더에 올바르게 복사합니다.

내가 가진 문제는 예를 들어 파일이 있는 경우입니다. testfile_pt_date.ts, 파일 이름이 바뀌지 않았지만 복사되었습니다. 이는 내가 원하는 것이 아닙니다. 파일을 무시하고 싶습니다. for do 루프가 파일을 허용하는 이유를 모르겠습니다.가리키다내가 어디로 잘못 가고 있는지 아는 사람이 있습니까?

#! /bin/bash

file=$1
for file in *_pt-1_*.ts
do
echo "$1"    
a="$(echo $1 | sed s/_pt-1_/_pt2_/)"
cp "$1" "$HOME/SGTV/${a##*/}"
echo "$a"
done

답변1

루프 대신 전용 도구를 사용하는 것이 좋습니다 rename. 읽기 쉽고, 쓰기가 더 빠르며, 혼란을 방지합니다.

rename 's/_pt-1_/_pt2_/' *_pt-1_*.ts


경고: rename엉망대부분의 배포판에서. Debian 또는 그 파생 제품을 사용하는 경우 패키지( 바이너리뿐만 아니라) 가 rename설치되어 있는지 확인하십시오 .rename

관련 정보