Строка даты в эпоху в bash

Как я могу получить эпоху, если у меня есть строка в следующем формате?
1/30/2017 11:14:55 AM
Не работает следующее:

 $ date -j '1/30/2017 11:14:55 AM' +'%m/%d/%Y %H:%M:%S' date: illegal time format 

  • исходный файл в качестве аргумента?
  • Есть ли способ POSIX для установки нулевого аргумента целевого приложения?
  • Копирование / резервное копирование всех файлов, содержащих файлы, соответствующие регулярному выражению
  • Невозможно войти в centOS с любым пользователем
  • mv для записи
  • Bash regex, строка соответствия из двух строк
  • Выход из бесконечного цикла перезагрузки при запуске (rc.local)
  • Изменить команду для удаления номера с конца имени файла.
  • One Solution collect form web for “Строка даты в эпоху в bash”

    Просто укажите формат ввода с -f :

     $ date -jf '%m/%d/%Y %H:%M:%S %p' '1/30/2017 11:14:55 AM' '+%m/%d/%Y %H:%M:%S' 01/30/2017 11:14:55 

    Что происходит после + – это выходной формат. Если вы хотите время эпохи, это будет +%s .

    (обратите внимание, что в этом коде нет ничего bash специфического.Этот код будет разбираться одинаково в любой оболочке, даже не-Bourne-подобных. date не является командой bash builtin, вот это команда date найденная в файловой системе, в частности, тот, который поддерживает эти расширения -f / -j BSD. В системах, отличных от BSD, эта команда, вероятно, не работает независимо от того, является ли оболочка bash или другим. Некоторые оболочки, такие как zsh или ksh93 имеют встроенные возможности анализа времени, но не bash )

    Linux и Unix - лучшая ОС в мире.