我们有时候在写批处理 Shell 脚本时,可能需要获取指定日期前(后) N 天/月/年的日期,这里的 N 可以是 1 天/月/年、2 天/月/年、3 天/月/年等等。方法其实很简单,这里做一个简单记录。基于这个语法,我们也可以写一个循环,将指定日期 N 天内的数据都做一个处理。

一、获取 N 天前(后)日期
首先是获取当前日期:

DATE=$(date +%Y%m%d)

这个命令就会将 DATE 赋值为 20190904,%Y%m%d 就是这个日期的格式,相应的还有%Y%m(年月,如 201909),更多的可以自己搜一搜写法。

获取这个日期 N 天后的日期(${DATE} 可以换成任易日期,如 20190101):

DATE_TMP=$(date -d "${DATE} N days" "+%Y%m%d")

获取这个日期 N 前后的日期(${DATE} 可以换成任易日期,如 20190101):

DATE_TMP=$(date -d "${DATE} N days ago" "+%Y%m%d")

举个例子:

获取当前日期 1 天后的日期:

DATE_TMP=$(date -d "${DATE} 1 days" "+%Y%m%d")

获取当前日期 1 天前的日期:

DATE_TMP=$(date -d "${DATE} 1 days ago" "+%Y%m%d")

举一反三:

获取这个日期 N 月后的日期:

DATE_TMP=$(date -d "${DATE} N month" "+%Y%m%d")

获取这个日期 N 月前的日期:

DATE_TMP=$(date -d "${DATE} N month ago" "+%Y%m%d")

获取这个日期 N 年后的日期:

DATE_TMP=$(date -d "${DATE} N year" "+%Y%m%d")

获取这个日期 N 年前的日期:

DATE_TMP=$(date -d "${DATE} N year ago" "+%Y%m%d")

二、循环处理 N 天内数据
简单的一个处理指定日期 N 天内数据的 Shell 脚本写法:

DATE=$(date +%Y%m%d)
for i in {1..5}
do
DATE_TMP=$(date -d "${DATE} ${i} days ago" "+%Y%m%d")
cd /root/backup
rm -rf *${DATE_TMP}*
done

基于这个脚本,再结合 Linux 的 crontab 命令(用法:Linux 利用 crontab 实现定时任务格式与用法简介),就可以实现例如每 7 天将当前日期 5 天内的数据删除。

Linux Shell获取指定日期 N 天/月/年前(后)的日期的更多相关文章

  1. linux中用shell获取昨天、明天或多天前的日期

    linux中用shell获取昨天.明天或多天前的日期 时间 -- :: BlogJava-专家区 原文 http://www.blogjava.net/xzclog/archive/2015/12/0 ...

  2. linux shell获取show slave status方法

    linux shell获取show slave status方法<pre>#!/bin/basharray=($(mysql -u数据库账号 -p数据库密码 -e "show s ...

  3. shell 获取指定ip的丢包率

    shell 获取指定ip的丢包率 丢包率大于10%就重新网络 使用sed 替换字符串 [[ $(ping -c 10 -W 1 baidu.com | awk '$6 ~ /%/{print $6}' ...

  4. linux shell获取时间

    获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用 ...

  5. linux shell获取键盘输入

    linux shell从键盘获取输入 代码1: #!/bin/bash #提示“Input your choice:”,把用户的输入保存入变量choice_user中read -p "Inp ...

  6. Shell获取指定区间随机未占用的端口号

    说明 最近在写Jenkins自动运维的脚本,由于是用的docker,部署的时候启动容器端口号冲突会导致部署失败,用的微服务也不在乎端口什么的,只求部署成功,所以想了很久,参考了一些文章,还有运维大哥的 ...

  7. Shell 获取指定行的内容

    需求: 有一个文件,根据指定的字符串,得到该字符串上两行的内容. 文件内容如下: linux-56:# cat sys.ttconnect.ini # Copyright (C) 1999, 2006 ...

  8. linux shell 获取进程pid

    1.通过可执行程序的程序名称 a.运行程序 b.获取进程id号 c.pidof相关知识:http://www.cnblogs.com/yunsicai/p/3675938.html 2.有些程序需要在 ...

  9. Shell获取指定时间

    时区基本知识 相差一个时区(经度15度)时间相差一小时.简单计算口诀:1.同一个时区的相差时间用减法,2.不同时区的相差时间用加法.3东加西减.例如一,东八区是8点,问东1区几点.根据上面口诀1,算: ...

  10. linux shell获取用户输入

    一.获取用户输入1.基本读取read命令接收标准输入的输入,或其它文件描述符的输入.得到输入后,read命令将数据输入放入一个标准变量中.[root@rac2 ~]# cat t8.sh #!/bin ...

随机推荐

  1. 解决xshell-ssh远程登录,只能通过public key登录导致无法登录的情况

    xshell无法通过密码登录的问题如下: 1.登录主机:vi /etc/ssh/sshd_config 2.搜索关键字:PasswordAuthentication 3.将PasswordAuthen ...

  2. RL 基础 | 如何注册自定义 gym 环境

    如何 搭建 自定义 gym 环境:https://www.cnblogs.com/moonout/p/17174833.html 如何注册自定义 gym 环境: 博客:https://zhuanlan ...

  3. 基于python+django的外卖点餐网站-外卖点餐系统

    该系统是基于python+django开发的外卖点餐系统.适用场景:大学生.课程作业.毕业设计.学习过程中,如遇问题可以在github给作者留言. 演示地址 前台地址: http://food.git ...

  4. 8. exporter

    一.已经实现的收集器 1.1 可收集的内存指标 1.2 可收集的jetty指标 二.自定义收集 2.1 summer 2.2 histogram 三.架构设计 exporter作为Prometheus ...

  5. 【java】 向上转型的运用

    应用 :求面积 1,抽象类  Geometry . public abstract class Geometry { public abstract double getArea(); } 2,矩形 ...

  6. bootstrap : 解决使图片全屏显示有空白边距的问题

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="utf-8 ...

  7. oceanbase部署维护命令学习

    oceanbase部署维护命令学习 背景 之前学习过TIDB数据库, 最近又准备学习一下Oceanbase数据库 发现其实两者还是比较相似的. 比较大的区别在于. TiDB是完全开源的, 并且比较明确 ...

  8. [转帖]Oracle客户端与Oracle数据库兼容矩阵

    https://www.cnblogs.com/kerrycode/p/17666025.html Oracle客户端与Oracle数据库之间是有兼容支持关系的,有些低版本的Oracle Client ...

  9. [转帖]CentOS-7-x86_64-Everything-2009 rpm包列表(CentOS7.9)

    CentOS-7-x86_64-Everything-2009 rpm包列表(CentOS7.9) 共10073个文件 复制389-ds-base-1.3.10.2-6.el7.x86_64.rpm ...

  10. [转帖]鲲鹏性能优化十板斧——鲲鹏处理器NUMA简介与性能调优五步法

    https://www.cnblogs.com/huaweicloud/p/12166354.html 1.1 鲲鹏处理器NUMA简介 随着现代社会信息化.智能化的飞速发展,越来越多的设备接入互联网. ...