\1은 $1 경고로 쓰는 것이 더 좋지만 $1은 작동하지 않습니다.

\1은 $1 경고로 쓰는 것이 더 좋지만 $1은 작동하지 않습니다.

"텍스트 이름[1].m4a"와 같은 내용이 포함된 파일의 이름을 "텍스트 이름[01].m4a"로 바꾸고 싶습니다.

처음에는 다음과 같이 썼습니다.

rename -n "s/\[(\d)\]/\[0$1\]/" *.m4a

명령이 [0]show 로 변경됩니다 . 로 [01]바꾸면 예상대로 작동합니다.$1\1

rename -n "s/\[(\d)\]/\[0\1\]/" *.m4a

\1 better written as $1 at (eval 5) line 1. 하지만 첫 번째 명령이 작동하지 않는 이유는 무엇이며 어떻게 다시 작성할 수 있습니까?라는 경고가 있습니다 .

File::Rename version 0.20와 함께 사용하고 있습니다 Ubuntu 18.04.4 LTS.

답변1

에서 "...$1..."큰따옴표를 사용하면 쉘이 $1값으로 대체됩니다.그것은문자열을 전달하기 전에 비어 있는 (셸의) 변수입니다 rename. 따라서 교체 rename만 보고 [0]이에 따라 수행할 수 있습니다.

쉘이 $1문자 그대로 전달 하도록 하려면 rename큰 따옴표 대신 작은 따옴표를 사용하십시오(Freddy가 언급한 것처럼 대체 문자열에서 대괄호를 이스케이프 처리할 필요도 없습니다).

관련 정보