Формат изменения даты в unix

Я передаю дату как переменную в функции. Я хочу конвертировать эту дату в другом формате. пример

DT=2015-12-08 

Хотите преобразовать DT в 08-dec-2015 в Unix.

  • переход на systemd сценарий запуска-выключения, который работает с tmpfs и bindmounts
  • Скрипт не работает, но команда работает вне сценария
  • Сценарий, чтобы сравнить дату работы с сегодняшней датой и выводить только сегодняшние неудачи
  • Как обрабатывать даты ISO8601 с помощью команды date linux
  • Создать скрипт для проверки размера каталога
  • Windows / Cygwin / Python: разрешение зависит от ручного ввода или сценария оболочки?
  • Ожидайте сценарий для копирования файла
  • Создание наборов файлов, которые соответствуют заданному размеру носителя для tar -T
  • 2 Solutions collect form web for “Формат изменения даты в unix”

    Предполагая дату GNU (т.е. не встроенный Linux):

     $ LC_TIME=C date --date=2015-12-08 +%d-%b-%Y 08-Dec-2015 

    Если вы используете не встроенный Linux или, в более общем плане, систему с датой GNU, вы можете использовать ее для набора произвольной даты.

     LC_ALL=C date -d "$DT" +%d-%b-%Y | tr AZ az 

    Если у вас нет даты GNU (или даже если вы это сделаете), вы можете сделать это в чистой оболочке.

     case $DT in *-01-*|*-1-*) month=jan;; *-02-*|*-2-*) month=feb;; *-03-*|*-3-*) month=mar;; *-04-*|*-4-*) month=apr;; *-05-*|*-5-*) month=may;; *-06-*|*-6-*) month=jun;; *-07-*|*-7-*) month=jul;; *-08-*|*-8-*) month=aug;; *-09-*|*-9-*) month=sep;; *-10-*) month=oct;; *-11-*) month=nov;; *-12-*) month=dec;; esac echo "${DT##*-}-$month-${DT%%-*}" 
    Linux и Unix - лучшая ОС в мире.