내 파일을 가져오고 이름을 바꾸는 스크립트를 작성하려고 합니다.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