2012-02-12 5 views
0

다음 형식의 파일이 있습니다. 실제 파일 이름 뒤에 날짜가옵니다.대량 파일 이름 바꾸기

file_1_12DEC2011.pdf 
file_2_12DEC2011.pdf 
file_3_12DEC2011.pdf 
file_4_12DEC2011.pdf 
file_5_12DEC2011.pdf 

나는 하루를 어떻게 늘릴 수 있는지 알아 내려고하고있다. 예를 들어, 이것이 내 원하는 결과 일 것입니다.

file_1_13DEC2011.pdf 
file_2_13DEC2011.pdf 
file_3_13DEC2011.pdf 
file_4_13DEC2011.pdf 
file_5_13DEC2011.pdf 
+0

모든 파일의 날짜가 항상 '12DEC2011'입니까? 그렇다면 RegEx 기반의 이름을 변경하면 트릭을 수행 할 수 있습니다. 하지만 그렇지 않다면 코드를 작성해야합니다. 정규 표현식은'31JAN2011'을'01FEB2011'로 바꿀 수 없습니다.) –

답변

1

안전하게 작업을 수행하려면 echomv 전에 :

for i in file_[1-5]_12DEC2011.pdf; do 
    mv $i ${i/12/13} 
done 

가 신속하게 작업을 수행하려면 rename 명령을 사용

$ rename 's/12/13/' file_[1-5]_12DEC2011.pdf 

UPDATE :이 당신이 awk을 사용할 수 있습니다 새 파일 이름을 생성하고 위의 명령에 입력하십시오.

for i in *_*.pdf; do 
    mv $i `echo $i | awk -F_ -v OFS=_ '{sub(/[0-9]+/, $NF+1, $NF)}1'` 
done 
+0

날짜가 항상'12DEC2011'이면이 것이 작동합니다. 그렇지 않으면 RegEx는이 상황에서 도움을 줄 수 없습니다. –

+0

그냥 정규 표현식이라는 것을 완전히 이해하고 있기 때문에 파일을 5 자리수로 표시하면 [0-9] + – endy

1

전년 동기 대비이 .BATch 파일을 시도 할 수 있습니다 :

@echo off 
setlocal EnableDelayedExpansion 
for %%f in (*.pdf) do (
    set name=%%~Nf 
    set day=!name:~-9,2! 
    set /A day=1!day! %% 100 + 1 
    if !day! lss 10 set day=0!day! 
    ECHO ren %%f !name:~0,-9!!day!!name:~-7! 
) 

테스트 파일을하고, 결과가 OK 인 경우, REN 명령에 ECHO 부분을 삭제합니다.

파일 이름의 마지막 9자가 위와 같이 DDMMMYYYY 형식의 날짜이면이 파일은 모든 이름과 숫자로 작동해야합니다.