在文件名中包含当前时间戳吗?

在文件名中包含当前时间戳吗?

我必须使用手动创建大量数据库备份mysqldump,例如像这样:

mysqldump -uroot -proot my-db > my-db.sql

我想知道是否有一种简单的方法可以将当前日期或时间戳包含到文件名中,以便文件看起来像这样:(my-db-20150917.sql或者另一种格式也可以,甚至是时间戳)。

答案1

我如何为我的文件名添加日期戳?

要在文件名中包含当前时间/日期,请结合使用date和命令替换:

mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d`.sql

man页面date解释了您可以使用的其他选项;但在这种情况下,您可能还对包括时间感兴趣:

mysqldump -uroot -proot my-db > my-db-`date +%Y%m%d-%H%M`.sql

等等,这个‘命令替换’是什么?

引自bash hacker wiki 上的命令替换

命令替换会扩展为命令的输出。这些命令在子 shell 中执行,其stdout数据就是替换语法扩展后的结果。

基本上,date -%Y%m%d输出20150917,我们使用反引号 ( `) 形式的命令替换将该输出包含在您提供的用于备份数据库的命令中。我们同样可以使用:

mysqldump -uroot -proot my-db > my-db-$(date +%Y%m%d).sql

以达到相同的结果。

相关内容