Страница 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
но я бы не рассчитывал на точность результата