如何在文件名后、文件扩展名前添加当前日期?
在文件名主名与扩展名之间添加日期的实现方法
核心思路
利用Bash的字符串参数展开功能,把文件名拆成主名和扩展名两部分,将日期插入两者之间;如果文件没有扩展名,直接把日期追加到文件名末尾即可。
具体实现代码
可读性高的带判断版本
# 定义日期格式,这里用%m%d%y表示两位月-日-年,可按需调整(比如%Y%m%d是四位年-月-日) dateNow=$(date +%m%d%y) # 处理单个文件 if [[ "$file" == *.* ]]; then # 有扩展名:主名+日期+.+扩展名 mv "$file" "${file%.*}${dateNow}.${file##*.}" else # 无扩展名:文件名+日期 mv "$file" "${file}${dateNow}" fi
适合脚本嵌入的一行简化版本
dateNow=$(date +%m%d%y); mv "$file" "${file%.*}${dateNow}${file:+.${file##*.}}"
参数展开说明
${file%.*}:移除文件名中最后一个.及之后的所有字符,提取出主名(比如Testfile1.xml会得到Testfile1)${file##*.}:移除文件名中最后一个.及之前的所有字符,提取出扩展名(比如Testfile1.xml会得到xml)${file:+.${file##*.}}:仅当file包含.时,才输出.扩展名;无扩展名时输出为空,省去了if判断
示例效果
- 原文件
Testfile1.xml→ 处理后Testfile1120324.xml(假设dateNow为120324) - 原文件
ProjectReport.docx→ 处理后ProjectReport120324.docx - 原文件
README→ 处理后README120324
内容的提问来源于stack exchange,提问作者Entropy1024
相关产品推荐
相关产品推荐

