首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批量重命名文件

批量重命名文件
EN

Stack Overflow用户
提问于 2012-02-12 11:11:14
回答 2查看 575关注 0票数 0

所以我有一系列的文件,格式如下,它们的真实文件名后面跟着日期。

代码语言:javascript
复制
file_1_12DEC2011.pdf
file_2_12DEC2011.pdf
file_3_12DEC2011.pdf
file_4_12DEC2011.pdf
file_5_12DEC2011.pdf

我想知道怎样才能让每一天都增加一天。例如,这将是我想要的结果。

代码语言:javascript
复制
file_1_13DEC2011.pdf
file_2_13DEC2011.pdf
file_3_13DEC2011.pdf
file_4_13DEC2011.pdf
file_5_13DEC2011.pdf
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-12 11:33:27

为了安全起见,在mv之前先使用echo

代码语言:javascript
复制
for i in file_[1-5]_12DEC2011.pdf; do
    mv $i ${i/12/13}
done

要快速完成此操作,请使用rename命令:

代码语言:javascript
复制
$ rename 's/12/13/' file_[1-5]_12DEC2011.pdf

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

代码语言:javascript
复制
for i in *_*.pdf; do
    mv $i `echo $i | awk -F_ -v OFS=_ '{sub(/[0-9]+/, $NF+1, $NF)}1'`
done
票数 1
EN

Stack Overflow用户

发布于 2012-02-13 10:13:54

Yoy可以尝试这个.BATch文件:

代码语言:javascript
复制
@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格式的日期即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9246112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档