如何在目录中的多个文件的文件扩展名前添加当前日期?

如何在目录中的多个文件的文件扩展名前添加当前日期?

如何在目录中的多个文件的文件扩展名前添加当前日期?

原始文件:

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/' *

相关内容