Shell脚本:复制多个文件并添加时间戳

时间:2016-07-21 21:44:23

标签: bash shell

我有一个包含几个.db文件的文件夹,我正在尝试创建一个复制每个*.db文件但将当前日期添加到文件的shell脚本

例如,该文件夹包含A.dbB.dbC.db。我希望它将A.db复制到/Backups/A_2016_07_21.db,依此类推。

我知道我可以cp -a A.db /Backups/A.db但我正在寻找一种更自动化的方法来为每个*.db文件执行此操作并添加当前日期

2 个答案:

答案 0 :(得分:4)

使用for构造和cp文件将文件迭代到目的地,并使用bash参数展开和date获取所需的文件名:

for f in *.db; do cp -a "$f" /Backups/""${f%.db}"_$(date '+%Y_%m_%d').db"; done

答案 1 :(得分:0)

您可以使用一行进行循环。

for file in $( ls /dir/*.db ); do cp $file /Backups/$( echo $file | cut -d. -f1 )_$( date +%Y_%m_%d ).$( echo $file | cut -d. -f2 ); done

分解: 对于$(ls /dir/*.db)中的文件 - 列出所有.db文件

cp $ file - 复制文件(非常明显)

/ Backups / $(echo $ file | cut -d.-f1) - 提取文件名的第一部分。例如A.db - >甲

$(日期+%Y %m_%d) - 打印日期,前面有下划线。

。$(echo $ file | cut -d.-f2) - 最后提取文件名的最后一部分,前缀为"。"