이 일의 비 우아한, 비 유연한 방법이 같은 것 : 더미 변수와 환경을가 오염 된 피 (ffmpeg
에 대한 예를 들어) 앞에 0을 지원해야순차 파일 이름을 바꾸는 방법은 0부터 시작합니까?
for path in *.jpg # IMG_1067_CR2.jpg, MG_1068_CR2.jpg, etc.
do
mv "$path" "${index-0}.jpg"
let index+=1
done
unset index
훨씬 더 좋은 방법, 드라이 런 옵션 (예 : rename
)이 있어야하며 확장 프로그램을 두 번 지정하지 않아도됩니다. 기존 도구가이를 지원합니까? 이 IMG_0_CR2.jpg, IMG_1_CR2.jpg ...
에 IMG_1067_CR2.jpg, IMG_1068_CR2.jpg...
으로 바뀔 것이다
rename -n 's/IMG_([0-9]*)\.jpg/$1/; $_="IMG_".($_-1067).".jpg"' *.jpg
@ l0b0 : 그것은'sed'가 아니라 펄입니다. –
@ shil88 : 차이점은 OP의 파일이 1067에 시작되었고 당신의 파일이 그렇지 않다는 것입니다. 그것은 작동하지 않는 문제가 아니라 단순히 다른 데이터 세트를 수용하는 것입니다. '+ 0'과 주변 괄호를 빼낼 수 있습니다. –
설명에 많은 감사드립니다! 지금 나는 명령을 이해하고 당신의 솔루션을 '있는 그대로'의 어떤 미친 이유로 완벽하게 작동시킵니다. (당시에는 "명백하게"무작위적인 행동을 보여주었습니다 ... 내 끝 부분에는 이상하게 여겨졌습니다!). 이전 코멘트를 지우고 유지합니다. – shil88