批量重命名文件

时间:2012-02-12 03:11:14

标签: regex batch-file grep file-rename

所以我有一系列具有以下格式的文件他们的真实文件名后跟日期。

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

2 个答案:

答案 0 :(得分:1)

echo之前mv安全地执行此操作:

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

<强>更新 您可以使用awk生成新文件名,并将其放在上面的命令中。

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

答案 1 :(得分:1)

Yoy可以尝试这个.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!
)

测试文件,如果结果正常,则在ren命令中删除ECHO部分。

此文件可以使用任何名称和任何数字,只要文件名的最后9个字符是DDMMMYYYY格式的日期,如上所示。