在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相同%g
ISO周编号的年份的后两位数字(请参见%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)%R
24小时小时和分钟;与%H:%M相同%s
自1970-01-01 00:00:00 UTC以来的秒%S
秒(00..60)%T
时间;与%H:%M:%S相同%u
星期几(1..7); 1是星期一%U
年的星期数,以星期日为星期的第一天(00..53)%V
ISO周数,以星期一为一周的第一天(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 ##