在Bash Shell中将当前日期追加到文件名

时间:2020-01-09 10:45:52  来源:igfitidea点击:

在Linux和UNIX之类的操作系统下,如何在文件名(例如backup_mm_dd_yyyyy.sql)后追加当前日期(mm_dd_yyyyy格式)?
在Linux或者Unix bash shell下,如何将当前日期从变量追加到文件名?
如何在文件名后追加日期?
我们使用date命令来显示或者设置系统日期和时间。
此外,我们可以在给定的格式中显示当前日期和时间。
本教程说明如何使用各种命令行选项将当前日期追加到文件名。

将当前日期追加到文件名

要以mm_dd_yyyy格式获取当前日期,请使用以下日期格式语法:

date +"%FORMAT_STRING"
date +"%m_%d_%Y"
date +"%Y-%m-%d"

您可以将其存储为变量名称:

var=$(date +"%FORMAT_STRING")
now=$(date +"%m_%d_%Y")
printf "%s\n" $now
today=$(date +"%Y-%m-%d")
printf "Today we are going to backup file to NFS server at AWS '%s'\n" "/efs/my-blog-${today}.sql.tar.gz"

输出示例:

Today we are going to backup file to NFS server at AWS '/efs/my-blog-2020-02-29.sql.tar.gz'

命令替换的Alternat语法如下:

var=`date +"%FORMAT_STRING"`
now=`date +"%m_%d_%Y"`
now=`date +"%Y-%m-%d"`
echo "${now}"

输出示例:

2020-02-29

现在我们可以将存储在$now中的当前日期追加到文件名中,如下所示:

echo "Coping data to /tmp/filename-${now} ..."

日期命令FORMAT_STRING

FORMAT_STRING(FORMAT)控制输出。
解释的序列如下(摘自GNU/date手册页)

  • %a语言环境缩写了工作日名称(例如Sun)
  • %A语言环境完整的工作日名称(例如周日)
  • %b语言环境缩写月份名称(例如Jan)
  • %B语言环境的完整月份名称(例如一月)
  • %C世纪;类似于%Y,但省略了最后两位数字(例如20)
  • %d月的某天(例如01)
  • %D日期;与%m /%d /%y相同
  • %F完整日期;与%Y-%m-%d相同
  • %gISO周编号的年份的后两位数字(请参见%G)
  • ISO周数的%G年(见%V);通常仅对%V有用
  • %H小时(00..23)
  • %I小时(01..12)
  • %j日(001..366)
  • %m月(01..12)
  • %M分钟(00..59)
  • %n换行符
  • %N纳秒(000000000..999999999)
  • %p等于AM或者PM的语言环境;如果未知,则为空白
  • %P与%p类似,但小写
  • %q季度(1..4)
  • %r语言环境为12小时制(例如11:11:04 PM)
  • %R24小时小时和分钟;与%H:%M相同
  • %s自1970-01-01 00:00:00 UTC以来的秒
  • %S秒(00..60)
  • %T时间;与%H:%M:%S相同
  • %u星期几(1..7); 1是星期一
  • %U年的星期数,以星期日为星期的第一天(00..53)
  • %VISO周数,以星期一为一周的第一天(01..53)
  • %w星期几(0..6); 0是星期日
  • %W年的星期数,星期一为星期的第一天(00..53)
  • %x语言环境日期表示形式(例如12/31/99)
  • %X语言环境时间表示形式(例如23:13:48)
  • %y年的后两位数字(00..99)
  • %Y
  • %z+ hhmm数字时区(例如-0400)
  • %:z+ hh:mm数字时区(例如-04:00)
  • %:: z+ hh:mm:ss数字时区(例如-04:00:00)
  • %:::z带有:以达到必要的精度的数字时区(例如-04,+ 05:30)
  • %Z字母时区缩写(例如EDT)

Bash Shell在Linux或者Unix中将日期追加日期到文件名

最后,您可以创建文件名,如下所示:

#/bin/bash
now=$(date +"%m_%d_%Y")
echo "Filename : /nas/backup_$now.sql"

输出示例:

Filename : /nas/backup_04_27_2010.sql

如何在文件名中添加日期?

这是一个快速演示:

将当前日期追加到文件名Shell脚本

您可以如下创建一个shell脚本:

#!/bin/bash
#
# Backup mysql/mariadb database
 
## Get current date ##
_now=$(date +"%m_%d_%Y")
 
## Appending a current date from a $_now to a filename stored in $_file ##
_file="/nas/backup_$_now.sql"
 
## Do it ##
echo "Starting backup to $_file..."
mysqldump -u admin -p'myPasswordHere'  myDbNameHere > "$_file"
 
## Add more stuff below ##