Bash сравните дату последнего изменения файла с другой датой

Мне нужно проверить, если дата последнего изменения файла, если больше, чем дата, сохраненная в переменной, как это:

variable=$date

if [ $file_last_modified_date -gt $variable ]; then.......

Ошибка, которую я получаю: [: too many arguments

Боюсь, ошибка в том, что два формата разные:

  • file_last_modified_date: 2016-11-01 23:00:00.000000000 +0100
  • variable: Wed Nov 2 16:10:52 CET 2016

Как сделать их сопоставимыми?

1 ответ

  1. Необходимо преобразовать обе даты в общий формат, который поддается сравнению. Вы можете просто использовать GNU dateдля преобразования обоих в метки времени эпохи Unix:

    d1=$(date +%s --date "$file_last_modified_date")  # 1478037600
    d2=$(date +%s --date "$variable")                 # 1478099452
    

    Теперь вы можете сравнить их как целые числа.

    if [ "$d1" -gt "$d2" ]; then