我正在编写一个脚本,周一至周五每天早上检查是否存在备份文件。这些备份文件保存在周一至周五每天结束时,仅命名为
02_10_15
有一个问题,如果我周一运行我的脚本说
09_10_15
它不会找到该文件,因为文件名是
06_10_15
而不是昨天
08_10_15
请在下面找到我的日期代码,
#Create variables
yday=$(date --date yesterday +"%d_%m_%y")
#yday="02_10_15"
FileName=$(date --date yesterday +"%Y%m%d")
我怎样才能获得上周五周一特别的日期。
答案1
unset mon
[ $(date +%u) -eq 1 ] && mon='Fri'
yday=$(date --date="last ${mon}day" +"%d_%m_%y")
因此,如果是星期一date +%u
生产,1
那么mon
变量将设置Fri
为- 日期的字符串将是last Friday
.否则它将保持未设置last day
状态mon
(空)
答案2
根据信息页面,GNUdate
接受您可以使用的其他形式。这是一个例子:
FileName=$(date --date '1 day ago' +"%Y%m%d")
FileName=$(date --date 'last Friday' +"%Y%m%d")
但是,它似乎不支持“最后一个工作日”或“一周的最后一天”等变体。如果您的脚本必须仅在工作日(周一至周五)运行,或者考虑到节假日,则需要多行来完成此任务。