Shell日期时间和时间戳的转换

Shell日期时间和时间戳的转换

Gitlab的备份文件是以时间戳显示的,类似:1438624820_gitlab_backup.tar 为了更易于阅读,想把文件名转换成日期格式:2015-08-04_gitlab_backup.tar

所以查找了下Shell里时间转换的方法,记录如下备忘。

Linux下时间转换的一些命令:

  • date +%s   可以得到UNIX的时间戳;
  • 用shell将日期时间与时间戳互转:

      date -d "2015-08-04 00:00:00" +%s     输出:1438617600

  • 而时间戳转换为字符串可以这样做:

      date -d @1438617600  "+%Y-%m-%d"    输出:2015-08-04

  • 如果需要得到指定日期的前后几天:
          seconds=`date -d "2015-08-04 00:00:00" +%s`       #得到时间戳
          seconds_new=`expr $seconds + 86400`                   #加上一天的秒数86400
          date_new=`date -d @$seconds_new "+%Y-%m-%d"`   #获得指定日前加上一天的日前

修改gitlab备份文件名的脚本:

#!/bin/bash
 
backup_path=${1-.}
echo  Specified Gitlab backup path is : $backup_path
 
for  i in  ` find  $backup_path -mtime 0 -iregex '^.*1[0-9]+_gitlab_backup.tar$'  - exec  basename  {} \;`
do
     time_stamp=` echo  $i | cut  -d '_'  -f1`
     new_name=` date  -d @$time_stamp "+%Y-%m-%d" `
     new_file=${new_name}_gitlab_backup. tar
     mv  $backup_path/$i $backup_path/$new_file
     echo  Moved backup file  from name $i to $new_file
done
  • 正则表达式时间戳以1开头,可以匹配到2033年,够用。
  • 脚本执行放入crontab,在gitlab backup之后

猜你喜欢

转载自blog.csdn.net/swj9099/article/details/78974033