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

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

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

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

#!/bin/sh


for f in *.jpg;
do

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


done

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

답변1

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

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

또한 살펴보십시오 man rename(때때로 util-linux의 항목은 prename어디에 있는지 참조). rename이렇게 하면 정확히 필요한 작업을 수행할 수 있습니다.

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

의도적으로 사용한 경우 /bin/sh다음을 사용할 수 있습니다.

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

자세한 내용은 man sh를 살펴보십시오.

관련 정보