我的问题是:我有一个备份bash脚本,需要访问一个名称中带有日期的文件夹,例如:backup_01072022 .
当我需要访问昨天的备份文件夹时,我使用了date=`TZ=GMT+24 date +%d%m%Y`
。
现在我要访问上周的备份文件夹:
date=`TZ=GMT+168 date +%d%m%Y`
,它不工作,它显示今天的日期。
我读到TZ不适用于+144以上的值。
在SunOS 6.8中还有其他方法可以操作日期吗?
?指出:
6.8 SunOSdate
版本util: 8.5
bash版本:4.1.11(2)-release
这取决于您系统上的date
版本。
WithGNU date
(v 8.26):
$ TZ=GMT date '+%d%m%Y'
06072022 # today
$ TZ=GMT date '+%d%m%Y' -d 'last week'
29062022
$ TZ=GMT date '+%d%m%Y' -d '7 days ago'
29062022
注意:我将把它留给OP来决定是否应该调整(或使用)显式TZ
设置
我似乎记得SunOS用Perl,所以如果你没有一个支持--date="..."
date
,您应该能够做的事:
date=$(perl -MPOSIX -e '
print POSIX::strftime "%d%m%Y", localtime time-(60*60*24*7)
')
感谢有帮助的评论和回答,我能够使它工作使用:
/usr/gnu/bin/date -d "last week" '+%d%m%Y'
事实证明,我没有使用GNU date
,直到我明确地指定它,这既不是--date
也不是-d
为我工作。我仍然不能弄清楚什么日期,直到我使用默认的GNU date
。