Как указать дату и время в имени файла?

Я пытаюсь выполнить команду и хотел бы поместить дату и время в имя выходного файла.

Вот пример команды, которую я хотел бы запустить.

md5sum /etc/mtab > 2016_4_25_10_30_AM.log

Формат даты может быть любым разумным с подчеркиванием. Даже UTC, если AM и PM не могут использоваться.

Если вы хотите использовать текущее datetime как имя файла, вы можете использовать замену date и команды .

  $ md5sum /etc/mtab > "$(date +"%Y_%m_%d_%I_%M_%p").log" 

Это приводит к тому, что файл 2016_04_25_10_30_AM.log (хотя и с текущим временем жизни) создается с помощью хеша md5 /etc/mtab качестве его содержимого.

Обратите внимание, что имена файлов, содержащие 12-часовые временные метки формата, вероятно, не будут сортироваться по имени так, как вы хотите их сортировать. Вы можете избежать этой проблемы, используя вместо этого 24-часовой формат времени.

Если у вас нет требования использовать этот формат даты, вы можете подумать об использовании формата даты и времени, соответствующего стандарту ISO 8601. Некоторые примеры создания действительных представлений даты и времени ISO 8601 включают в себя:

  $ date +"%FT%T" 2016-04-25T10:30:00 $ date +"%FT%H%M%S" 2016-04-25T103000 $ date +"%FT%H%M" 2016-04-25T1030 $ date +"%Y%m%dT%H%M" 20160425T1030 

Если вам нужны «безопасные» имена файлов (например, для совместимости с Windows), вы можете опустить двоеточия из временной части.

Имейте в виду, что приведенные выше примеры предполагают местное системное время. Если вам нужно представление времени, которое является согласованным во всех часовых поясах, вы должны указать смещение часового пояса или UTC. Вы можете получить смещение часового пояса, соответствующее стандарту ISO 8601, с помощью «% z» в части формата вашего вызова date следующим образом:

  $ date +"%FT%H%M%z" 2016-04-25T1030-0400 

Вы можете получить время UTC в своем вызове по date , указав флаг -u и добавив «Z» в конец строки datetime, чтобы указать, что время UTC выглядит следующим образом:

  $ date -u +"%FT%H%MZ" 2016-04-25T1430Z