@ edit: следующее будет работать только с датой GNU:
Вы всегда можете вычесть секунды.
date --date=@$(($(date +%s) - 30 * 24 * 3600)) +%Y-%m-%d
Если вы заинтересованы в вычитании 30-дневной формы "сейчас", просто:
date --date="-30days" +%Y-%m-%d
date
форматирование даты настолько широко, что можно указать точную дату, например, с параметром -I
, от даты для человека:
-I[FMT], --iso-8601[=FMT]
output date/time in ISO 8601 format. FMT='date' for date only
(the default), 'hours', 'minutes', 'seconds', or 'ns' for date
and time to the indicated precision. Example:
2006-08-14T02:34:56-06:00
Следующее:
date --date="$(date -I) -30days" +%Y-%m-%d
работает в моей системе, как и ожидалось.