Как получить предыдущую дату с помощью ссылки на файл с командой даты?

Нет. Если Вы хотите видеть, сколько времени та же задача возьмет другие аппаратные средства, то необходимо выполнить ту же задачу на новых аппаратных средствах.

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

4
28.08.2013, 16:23
4 ответа

Предупреждение:

$ date -r ~/a
Sun 28 Oct 23:12:00 GMT 2012
$ LC_ALL=C date -r ~/a
Sun Oct 28 23:12:00 GMT 2012

Как произведено, date производит дату в локальном формате пользователя. Как введено к -d GNU date более придирчиво на формате хотя:

$ date -d "$(date -r ~/a) - 1 day"
date: invalid date ‘Sun 28 Oct 23:12:00 GMT 2012 - 1 day’

Фиксация локали к C устраняет ту проблему:

$ export LC_ALL=C
$ date -d "$(date -r ~/a) - 1 day"
Sun Oct 28 00:12:00 BST 2012

Но отметьте, как дата все еще 28.10.2012, хотя теперь в летнее время. Поэтому за 24 часа до той даты в Великобритании, мы были все еще тем же днем.

Теперь, если бы Вы хотите накануне, необходимо было бы записать это:

date -d "$(date -r /tmp/file.ref +'%F -1 day')" +%F
5
27.01.2020, 20:47
LC_ALL=C date -d "$(LC_ALL=C date -r /tmp/ftpbkp.log) - 1 day" +%F

Если дата GNU не доступна:

perl -MPOSIX -le'
  print strftime("%Y-%m-%d", localtime +(stat shift)[9] - 24*60*60)
  ' /tmp/ftpbkp.log
4
27.01.2020, 20:47
  • 1
    да.. после большого количества испытанных Просто я также нашел то же, спасибо –  Rahul Patil 28.08.2013, 16:20
  • 2
    Это не будет работать во всех локалях, даже английские локали (можно хотеть назвать обоих dates с LC_ALL=C). Это не может работать, как Вы хотите вокруг изменения летнего времени. –  Stéphane Chazelas 28.08.2013, 16:38
  • 3
    @StephaneChazelas, как обычно, благодарит за Ваши ценные комментарии! –  Dimitre Radoulov 28.08.2013, 16:44
  • 4
    Сэр Спасибо, Если я использую LC_ALL=C в вершине в сценарии, то, что достаточно? на самом деле я не сделал понятый почему использование LC_ALL=C. paste.ubuntu.com/6036642 –  Rahul Patil 28.08.2013, 16:44
  • 5
    Обратите внимание, что жемчуг каждый будет также затронут изменением DST. –  Stéphane Chazelas 28.08.2013, 17:30
date -r /tmp/ftpbkp.log +%s | awk '{print strftime("%F", $1 - (24*60*60) );}'
2
27.01.2020, 20:47

-d опция используется для определения другого времени, чем текущее время. Вы спросили date управляйте для форматирования времени последнего изменения файла /tmp/ftpbkp.log согласно формату %F и дополнительно Вы передали его другое время, указанное -d опция. Они опция являются взаимоисключающими. Но существует прием, как объединить его:

date -d "`date -r /tmp/ftpbkp.log`" - 1 day"
1
27.01.2020, 20:47
  • 1
    Обратные галочки удерживаются от использования, используют $() вместо этого. Также, что еще это добавляет вне какой предоставленный ответ Dimitre? –  slm♦ 28.08.2013, 16:24
  • 2
    , который я записал этому одновременно так в основном ничто :-) –  dsmsk80 28.08.2013, 16:28
  • 3
    @slm, хороший комментарий там. Необходимо использовать $() замена команды все время, так как это предлагает больше гибкости во вложенных командах и избегающий ввода иногда ненужного " " двойные кавычки или ' ' одинарные кавычки –  Valentin Bajrami 28.08.2013, 16:45
  • 4
    @val0x00ff, был бы Вы хотеть расшириться как $() старается не вводить кавычки? –  Stéphane Chazelas 28.08.2013, 17:33
  • 5
    @StephaneChazelas, я не говорю, что это старается не вводить кавычки. То, что я говорю: При использовании обратных галочек'''' необходимо использовать больше кавычек для выхода из других кавычек, которые сделают строку кода неразборчивой. Так вложенное заключение в кавычки внутри $() намного более удобно. Сравните эти два x=$(grep "$(dirname "$somepathpath")" file) x =grep "`dirname "$somepath"`" файл' mywiki.wooledge.org/BashFAQ/082 –  Valentin Bajrami 28.08.2013, 17:41

Теги

Похожие вопросы