我写了一个删除旧文件的脚本。部分脚本如下:
lastmonth=`date +%Y%m -d '1 month ago'`
inputdir0=/var/this/directory/${lastmonth}*
if [ `date +%d` -gt 9 ];
then
rm -Rf $inputdir0
fi
有些目录以日期+%Y%m%d格式命名。 现在是3月29日/ 30/31,该脚本删除了本月的所有文件。 今天我了解到这种情况是因为没有2月29/30/31。
我该如何解决这个问题?
答案 0 :(得分:4)
减去当月的天数,您将获得上个月的最后一天。例如:
date +%Y-%m-%d -d "`date +%d` day ago"
结果
2017-02-28
由于您不关心这一天而只想要月份,因此您将始终获得正确的月份:
lastmonth=$(date +%Y%m -d "$(date +%d) day ago")
答案 1 :(得分:0)
如果您希望将日期改为您提供的天数:
Number=222
current_date=$(date +%Y%m%d)
past_date=$(date -d "$current_date - $Number days" +%Y%m%d)
echo "$current_date\t$past_date"
如果您希望获得1个月:
date -d "$current_date -1 month"
相似一年:
date -d "$current_date -1 year"