3

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

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

Так что мне интересно, есть ли ярлык для вставки текущей даты, встроенной? Если нет, могу ли я его создать? Какой самый быстрый способ сделать имя / папку проще для текущей даты?

3 ответа3

7

В оболочке используйте подстановку команд:

touch "$(date)"

или с форматом

touch "$(date +%Y-%m-%d_%H.%M.%S)"

Вы можете сохранить более длинную команду в псевдониме или функции

alias ts='date +%Y-%m-%d_%H.%M.%S'
touch "$(ts)"
3

Следуя совету Чоробы, вы можете определить пользовательское действие в контекстном меню Thunar.

1

Было несколько способов добавить файл:

Из stackoverflow :

  1. Получить дату в виде строки

Это довольно легко. Просто используйте команду date с опцией +. Мы можем использовать обратные пометки, чтобы зафиксировать значение в переменной.

$ DATE=`date +%d-%m-%y`

Вы можете изменить формат даты, используя различные параметры%, как подробно описано на странице справки по дате.

  1. Разделить файл на имя и расширение.

Это немного сложнее. Если мы думаем, что они будут только один. в имени файла мы можем использовать вырезать. в качестве разделителя.

$ NAME=`echo $FILE | cut -d. -f1
$ EXT=`echo $FILE | cut -d. -f2`

Тем не менее, это не будет работать с несколькими. в имени файла. Если мы используем bash - которым вы, вероятно, являетесь - мы можем использовать некоторую магию bash, которая позволяет нам сопоставлять шаблоны при расширении переменных:

$ NAME=${FILE%.*}
$ EXT=${FILE#*.}

Собрав их вместе, мы получим:

$ FILE=somefile.txt             
$ NAME=${FILE%.*}
$ EXT=${FILE#*.} 
$ DATE=`date +%d-%m-%y`         
$ NEWFILE=${NAME}_${DATE}.${EXT}
$ echo $NEWFILE                 
somefile_05-10-15.txt

И если мы меньше беспокоимся о читабельности, мы делаем всю работу в одной строке (с другим форматом даты):

$ FILE=somefile.txt  
$ FILE=${FILE%.*}_`date +%d%b%y`.${FILE#*.}
$ echo $FILE                                 
somefile_05oct15.txt

Другие способы были бы:

$ дата ср. 16 октября 19:20:51 ПО ВОСТОЧНОМУ ВРЕМЕНИ 2013

Если вы действительно хотите, чтобы имена файлов были такими, вам нужно заключить эту строку в кавычки.

$ touch "foo.backup. $(date)"

$ ll foo * -rw-rw-r-- 1 saml saml 0 окт 16 19:22 foo.backup.Ср 16 октября 19:22:29 ПО ВОСТОЧНОМУ ВРЕМЕНИ 2013

Вы, вероятно, думаете о другой строке, которая будет добавлена, но я думаю. Я обычно использую что-то вроде этого:

$ touch "foo.backup.$(date +%F_%R)"
$ ll foo*
-rw-rw-r-- 1 saml saml 0 Oct 16 19:25 foo.backup.2013-10-16_19:25

См. Справочную страницу для даты для большего количества кодов форматирования вокруг вывода для даты и времени. Дополнительные форматы

Если вы хотите получить полный контроль, если вы обратитесь к странице руководства, вы можете сделать что-то вроде этого:

$ date +"%Y%m%d"
20131016

$ date +"%Y-%m-%d"
2013-10-16

$ date +"%Y%m%d_%H%M%S"
20131016_193655

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .