![如何在目录中的多个文件的文件扩展名前添加当前日期?](https://linux22.com/image/114149/%E5%A6%82%E4%BD%95%E5%9C%A8%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D%E5%89%8D%E6%B7%BB%E5%8A%A0%E5%BD%93%E5%89%8D%E6%97%A5%E6%9C%9F%EF%BC%9F.png)
如何在目录中的多个文件的文件扩展名前添加当前日期?
原始文件:
Expenses.log
Allowances.log
输出:
Expenses_20170624.log
Allowances_20170624.log
此命令在文件扩展名后面附加日期。 :(
for file in *; do mv "$file" "${file}_$(date +"%d%m%Y")"; done
答案1
使用参数扩展来分隔扩展:
#! /bin/bash
date=$(date +%Y%m%d)
for file in * ; do
basename=${file%.*} # Remove extension
extension=${file##*.} # Remove basename
mv "$file" "$basename"_"$date.$extension"
done
答案2
带短rename
命令 (珀尔执行):
rename 's/\.([^.]+)$/_'$(date +"%d%m%Y")'.$1/' *