현재 파일 이름을 바꿀 수있는 bash 스크립트를 작성하고 있습니다. 모든 파일은 다음과 같습니다. * _ #. ext 여기서 *는 #과 9 자리 숫자 일 수 있습니다. 이 예에서는 대신 3 자리 숫자로 표시됩니다. 여기 정규식, 라인 끝과 Bash 스크립트가 함께 작동하지 않습니다.
는 무엇을해야하는지에 대한 기본적인 예입니다입력 : example1_123.jpg
출력 : example1.jpg 충분히
간단한? 오른쪽 :
#!/bin/bash
filename="example1_123.jpg"
echo ${filename/_[0-9][0-9][0-9]/}
출력 : example1.jpg이 ... 작동
한 입력이이 파일 이름 같은 것이 아닙니다 같이 example2_123.jpg_987.jpg
파일의 이름이 example2_123.jpg.jpg 대신 example2.jpg_987.jpg로 바뀝니다.
줄 끝 부분에 $를 사용했지만 $가 사용되었으므로이 부분이 중단되었습니다. 변수 :
는#!/bin/bash
filename="example2_123.jpg_987.jpg"
echo ${filename/_[0-9][0-9][0-9].jpg$/}.${filename/*./}
출력 : example2_123.jpg_987.jpg.jpg $ \ 또한 작동하지 않습니다. 나는 단서 있습니다 ...
누구든지 내가 그것을 필요로하는 방식으로 작동 시키도록 도울 수 있습니까?
P. [0-9] [0-9] [0-9] 대신 [0-9] {3}도 깨집니다. 누군가가 그것을 단축하는 방법을 알고 있다면, 그렇게 말하십시오 :
고마워.이게 잘 작동 했어. (jpg | png | gif)도 지원되지 않는다. |) ... 대안? – David
아마도 bash는 구식 정규 표현식을 사용하기 때문에 아마도 bash가 실제로 제한되어 있기 때문에 'echo sed'의 조합을 사용하고 싶습니다. 역 참조 지원이 필요한 경우 – fge
을 참조하십시오. 찾고있는 솔루션에 대한 게시물 수정 – fge