Страница 1 из 1

[sh]Получить дату изменения файла

Добавлено: 2009-02-03 18:53:02
Animator1
Необходимо определить произошли ли изменения в файле.
1. Получить дату дд.мм.гггг чч.мм.сс последнего изменения файла
2. Файл изменяется.
3. Получить дату дд.мм.гггг чч.мм.сс последнего изменения файла
4. Сравнить даты и определить произошли ли изменения.

Помогите готовым скриптом(если есть). Или подскажите как получить дату в таком формате.

Re: [sh]Получить дату изменения файла

Добавлено: 2009-02-03 21:02:14
Гость
Animator1 писал(а):Получить дату дд.мм.гггг чч.мм.сс последнего изменения файла
в таком формате никто дату не сравнивает. Сначала переводят в секунды от Эпохи (12 am UTC, Jan 1, 1970), а потом сравнивают числа.

Код: Выделить всё

> sh
$ file=foo
$ eval $(stat -s $file)
$ alpha_mtime=$st_mtime
$ touch $file # modify file
$ eval $(stat -s $file)
$ beta_mtime=$st_mtime
$ [ $beta_mtime -gt $alpha_mtime ] && echo file \`$file\' changed since last stat'()' call
file `foo' changed since last stat() call
впрочем, можно также вызвать `stat -f%m', если нужна только дата модификации и не хочется засорять контекст лишними переменными

stat(1) умеет и в pretty-print формати отображать информацию о файле:

Код: Выделить всё

> stat -x foo
stat -x foo
  File: "foo"
  Size: 0            FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: ( 1001/    luser)  Gid: ( 1001/    luser)
Device: 171,3601793269   Inode: 138200    Links: 1
Access: Tue Feb  3 20:49:01 2009
Modify: Tue Feb  3 20:49:01 2009
Change: Tue Feb  3 20:49:01 2009

Re: [sh]Получить дату изменения файла

Добавлено: 2009-02-03 21:10:04
Гость
кстати, `дд.мм.гггг чч.мм.сс' противоречит даже элементарной сортировке, если уж сравнивать в таком виде (с точками), то:

Код: Выделить всё

> stat -f%Sm -t'%Y.%m.%d.%H.%M.%S' foo
2009.02.03.20.49.01
но я бы не рассчитывал на точность результата