Cbh*_*ihe 5 date bash-scripting
我需要创建日志文件,这些文件本质上是带有 prefixyp_和 suffix 的日期戳.log,以及一个被操纵的日期:
$ touch yp_$(echo "$(date +%Y%m%d)-10" | /usr/bin/bc -l).log
$ ls
yp_20150912.log # ... ok for today's date.
Run Code Online (Sandbox Code Playgroud)
这对今天来说很好,但是当一天的数字在 01 到 10 之间时,一切都会变得混乱。结果不能再解释为日期戳。
例如,假设这一天是 2016 年 3 月 8 日,即“20160308”。如何上面代码中,以确保减去10天会产生不“20150298”,但“20150227”?还用 19820103 测试你的答案......
——我看着man date。
-apropos date喷出 161 个点击我也审查过。
有人可以帮忙解决那个单线吗?
要显示从今天起 x 天的格式化日期:
$ echo $(date +%Y%m%d)
20150922
$ echo $(date -d -10days +%Y%m%d)
20150912
$ echo $(date -d +10days +%Y%m%d)
20151002
Run Code Online (Sandbox Code Playgroud)
幸运的是,GNU date有一个非常方便的 -d选项:
Run Code Online (Sandbox Code Playgroud)-d, --date=STRING display time described by STRING, not 'now'
(来自man date)
这接受任意日期描述,例如“现在 + 1 年”“1 月 28 日 + 3 周”;或者在您的情况下:“现在 - 10 天”:
touch yp_$(date -d 'now - 10 days' +%Y%m%d).log
Run Code Online (Sandbox Code Playgroud)
不需要对 的乱七八糟的调用bc,也不需要担心闰年——GNUdate会处理它。
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |