2017-09-29 6 views
0

내가 파일의 목록이 : 나는 편지를 대체 할 수있는 방법을 궁금해 정규 표현식은 이름에 문자로 (일부) 번호를 대체

file1_a.pdf file1_b.pdf file1_c.pdf 

그러나

file1_1.pdf file1_2.pdf file1_3.pdf 

을, 나는 그들이 이름을 변경하려면 파일 이름의 숫자 (표준 정규 표현식 (regular regexp)에 의존하는 rename perl 스크립트 사용). 불행히도, tr은 도움이되지 않습니다. 왜냐하면 내가 원하지 않는 번호를 대체하기 때문입니다.

답변

2

당신은 이런 식으로 뭔가를 시도 할 수 : 대체 연산자에 e 옵션은 소문자로 자리를 변환하려면 s///e 연산자에 대한 자세한 내용은 perlop를 참조하는 데 사용됩니다

rename 's/_\K(\d+)(?=.pdf$)/chr ((ord "a") + $1 - 1)/e' *.pdf 
  • .
  • 숫자 앞에 밑줄을 제거하지 않으려면 너비가 0 인 lookbehind 어설 션 \K을 사용하십시오. 자세한 내용은 perlre을 참조하십시오.
  • 숫자 뒤에 오는 .pdf 확장을 제거하지 않으려면 너비가 0 인 긍정적 인 미리보기 주장을 사용하십시오 (perlre 참조).