Linux Shell获取指定日期 N 天/月/年前(后)的日期
我们有时候在写批处理 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 天/月/年前(后)的日期的更多相关文章
- linux中用shell获取昨天、明天或多天前的日期
linux中用shell获取昨天.明天或多天前的日期 时间 -- :: BlogJava-专家区 原文 http://www.blogjava.net/xzclog/archive/2015/12/0 ...
- linux shell获取show slave status方法
linux shell获取show slave status方法<pre>#!/bin/basharray=($(mysql -u数据库账号 -p数据库密码 -e "show s ...
- shell 获取指定ip的丢包率
shell 获取指定ip的丢包率 丢包率大于10%就重新网络 使用sed 替换字符串 [[ $(ping -c 10 -W 1 baidu.com | awk '$6 ~ /%/{print $6}' ...
- linux shell获取时间
获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用 ...
- linux shell获取键盘输入
linux shell从键盘获取输入 代码1: #!/bin/bash #提示“Input your choice:”,把用户的输入保存入变量choice_user中read -p "Inp ...
- Shell获取指定区间随机未占用的端口号
说明 最近在写Jenkins自动运维的脚本,由于是用的docker,部署的时候启动容器端口号冲突会导致部署失败,用的微服务也不在乎端口什么的,只求部署成功,所以想了很久,参考了一些文章,还有运维大哥的 ...
- Shell 获取指定行的内容
需求: 有一个文件,根据指定的字符串,得到该字符串上两行的内容. 文件内容如下: linux-56:# cat sys.ttconnect.ini # Copyright (C) 1999, 2006 ...
- linux shell 获取进程pid
1.通过可执行程序的程序名称 a.运行程序 b.获取进程id号 c.pidof相关知识:http://www.cnblogs.com/yunsicai/p/3675938.html 2.有些程序需要在 ...
- Shell获取指定时间
时区基本知识 相差一个时区(经度15度)时间相差一小时.简单计算口诀:1.同一个时区的相差时间用减法,2.不同时区的相差时间用加法.3东加西减.例如一,东八区是8点,问东1区几点.根据上面口诀1,算: ...
- linux shell获取用户输入
一.获取用户输入1.基本读取read命令接收标准输入的输入,或其它文件描述符的输入.得到输入后,read命令将数据输入放入一个标准变量中.[root@rac2 ~]# cat t8.sh #!/bin ...
随机推荐
- java进阶(13)--int、String、Integer互相转换
一.转换流程图
- Postman 压力测试
本文为博主原创,未经允许不得转载: postman 还提供了接口压力测试的功能,通过这种方式可以测试接口性能. 若接口测试需要通过pre s单独封装进行计算一些参数时,可以参考我的上一篇博客: Pos ...
- 电子科技大学--ARM实验Keil uvison5 安装以及S3C2440A芯片包下载
1.简介 本教程主要服务于电子科技大学软工嵌入式新生,节省一些查找资料的时间 2.过程 请按如下顺序安装: 1,安装mdk_514.exe (主体文件) 2,安装Keil.STM32F1xx_DFP. ...
- STM32F429 实测基本数据类型占用空间
实测代码 1 void CalculateDataTypeSize(void) 2 { 3 printf("sizeof(char} = %u\r\n", sizeof(char) ...
- [转帖]s3对象存储挂载到本地文件夹
https://www.zhangzhuo.ltd/articles/2021/10/22/1634888049032.html 一.s3fs工具 s3fs-fuse 是一个采用 c++ 开发的开源应 ...
- [转帖]Sysbench - 一种系统性能benchmark
SysBench是一款开源的.跨平台的.模块化的.多线程的性能测试工具,通过高负载地运行在数据库上,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.用于评估操作系统的性能参数. 1 sysb ...
- OpenGauss3.1.0 单机版安装部署过程
背景 由易到难 先进行单节点的设置 先说坑 openEuler2203 默认安装了python3.9 但是openGauss里面指代了3.6和3.7 /openGauss/install/om 注意在 ...
- 解决跨域问题的8种方法,含网关、Nginx和SpringBoot~
跨域问题是浏览器为了保护用户的信息安全,实施了同源策略(Same-Origin Policy),即只允许页面请求同源(相同协议.域名和端口)的资源,当 JavaScript 发起的请求跨越了同源策略, ...
- 让你轻松看懂defer和async
defer和async产生的原因 HTML 网页中,浏览器通过<script>标签加载 JavaScript 脚本. <!-- 页面内嵌的脚本 --> <script t ...
- js加减乘除运算出现精度丢失
做乘法运算出现精度丢失 let aa= 2106.49 console.log( aa*10000 ) //21064899.999999996 console.log( Math.round(aa* ...