2012-02-12 11 views
0

次のような形式のファイルがあります。実際のファイル名の後に日付が続きます。バルク名を変更するファイル

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

私は日を1日増やす方法を理解しようとしています。たとえば、これが私の望む結果になります。

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文字が上記のようにDDMMYYYY形式の日付であれば、任意の名前と任意の数字で動作するはずです。

関連する問題