파일 이름을 바꾸기 위한 쉘 매개변수 대체

파일 이름을 바꾸기 위한 쉘 매개변수 대체

"foo"로 시작하는 파일 이름을 "boo"로 바꿔야 합니다.

이것은 내가 사용하는 스크립트입니다.

#!/bin/sh


for f in *.jpg;
do

mv -- "{$f}" "${f/foo/boo}";


done

하지만 실행하면 심각한 대체 오류가 발생합니다. 내 코드에 무슨 문제가 있나요?

답변1

/bin/sh일반적인 sh 기능만 허용하는 것으로 보이는 쉘을 사용하고 있습니다 . 확장과 같은 고급 기능은 ${//}bash와 같은 셸에서만 사용할 수 있습니다.

Shebang을 바꾸면 모든 것이 잘 작동합니다.

또한 살펴보십시오 ( man renameutil-linux에서는 " prename여기가 어디에 있습니까" 라고도 함). rename이렇게 하면 정확히 필요한 작업을 수행할 수 있습니다.

rename 's/^foo/boo/' foo*.jpg

관심이 있는 경우 /bin/sh다음을 사용할 수 있습니다.

mv -- "$f" "boo${f#foo}"

자세한 내용은 man sh를 참조하세요.

관련 정보