"텍스트 이름[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가 언급한 것처럼 대체 문자열에서 대괄호를 이스케이프 처리할 필요도 없습니다).