批量重命名文件
所以我有一系列文件,格式如下他们的真实文件名称后跟日期。批量重命名文件
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
要安全地做到这一点,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
UPDATE: 您可以使用awk
来生成新的文件名,并将其放在上面的那些命令中。
for i in *_*.pdf; do
mv $i `echo $i | awk -F_ -v OFS=_ '{sub(/[0-9]+/, $NF+1, $NF)}1'`
done
如果日期总是“12DEC2011”,则应该起作用。如果没有RegEx在这种情况下无法提供帮助。 – 2012-02-12 03:44:36
只是为了充分理解这是一个正则表达式,所以说我有文件上涨到5位数可以说[0-9] + – endy 2012-02-12 04:10:33
同比可以试试这个.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格式的日期,该文件就可以使用任何名称和任意数字。
对于所有文件,日期是否始终为'12DEC2011'?如果是的话,基于RegEx的重命名可以做到这一点。但是,如果不是,你需要编写一些代码。正则表达式将无法将'31JAN2011'更改为'01FEB2011';) – 2012-02-12 03:43:41