Bash 스크립트 이름 바꾸기 - false 해당 파일 또는 디렉터리 오류가 없습니다.

Bash 스크립트 이름 바꾸기 - false 해당 파일 또는 디렉터리 오류가 없습니다.

같은 디렉터리에 있는 다른 파일을 기반으로 수백 개의 파일 이름을 바꾸려고 합니다. 스크립트를 찾았고 이를 수정한 후 다음과 같은 결과를 얻었습니다.

while read file; do echo mv "\"${file%/*}/Trailer.mov\"" "\"${file%.*}-Trailer.mov\""; done < <(find . -type f ! -name "Trailer.mov" -name "*.mkv")

다음과 같이 mv 명령을 출력합니다.

mv "./dir1/Trailer.mov" "./dir1/filename-Trailer.mov"

수동으로 실행하면 mv 명령이 파일이 있는 경우 파일 이름을 올바르게 바꿉니다. 에코 없이 스크립트를 실행하면 다음과 같은 오류가 발생합니다.

mv: cannot stat ‘"./dir1/Trailer.mov"’: No such file or directory

이 오류는 파일 존재 여부에 관계없이 모든 프로젝트에서 발생합니다. 왜 이런 일이 발생합니까? 나는 루트로 실행 중입니다.

답변1

내부 따옴표를 제거하거나 를 사용해야 합니다 eval.

문제는 "이제 s가 파일 이름의 일부로 간주된다는 것입니다. 즉, 존재하지 않는 잘못된 파일 이름에 액세스하려고 한다는 것입니다.

관련 정보