Как проверить все метки времени файла?

Есть ли в Linux команда для проверки всех временных меток файла?

Я пытаюсь увидеть последние измененные, созданные и затронутые даты в файле.

2 ответа

Решение

Команда называется stat,

$ stat test
234881026 41570368 -rw-r--r-- 1 werner staff 0 0 "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" 4096 0 0 test

Если вы хотите изменить формат, обратитесь к справочным страницам, поскольку вывод зависит от ОС и зависит от Linux/Unix.

Как правило, вы можете узнать время через обычный каталог:

  • ls -l выводит в последний раз, когда содержимое файла было изменено, mtime
  • ls -lc выводит последний раз изменения статуса файла, ctime ( Какая разница?)
  • ls -lu выводит время последнего доступа, atime (хотя полезность этой концепции подлежит обсуждению)

И, конечно же, ctime не записывает, когда файл был "создан". Спецификация POSIX определяет только три временные метки, но некоторые файловые системы Linux хранят время рождения / время создания. Как найти дату создания файла? На такой поддерживаемой конфигурации можно использовать

stat --printf '%n\nmtime: %y\nctime: %z\natime: %x\ncrtime:%w\n'

Для каждого из ваших файлов хранится только три разных значения времени, как определено стандартом POSIX: http://pubs.opengroup.org/onlinepubs/9699919799/ (см. Раздел " Базовые определения " -> 4. Общие понятия -> 4.8 Файл Times Update)

Каждый файл имеет три различные связанные временные метки: время последнего доступа к данным, время последней модификации данных и время последнего изменения статуса файла. Эти значения возвращаются в структуре структуры характеристик файла, как описано в .

И из :

atime is for Last data access timestamp.
mtime is for Last data modification timestamp.
ctime is for Last file status change timestamp.

Следующие примеры показывают разницу между atime, mtime и ctime, эти примеры в GNU/Linux BASH. Ты можешь использовать stat -x в Mac OS X или другом дистрибутиве BSD чтобы увидеть аналогичный формат вывода.

$ stat --version
stat (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Michael Meskes.
$
$ touch test
$ stat test
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:58:28.609223953 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800

Когда файл только что создан, три метки времени совпадают.


1. время

Во-первых, давайте посмотрим на данные файла, прочитав его (less или же vim) распечатка (cat) или скопируйте его в другой файл (cp).

$ cat test #Nothing will be printed out, since the file is empty
$ stat test
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800  <-- atime Changed!
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800

2. время

Теперь давайте изменим статус файла, изменив разрешение (chmod) или переименовать его (mv)

$ chmod u+x test
$ stat stet
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:04:10.178285430 +0800  <-- ctime Changed!
$    
$ mv test testing
$ stat testing
  File: `testing'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:06:33.342207679 +0800  <-- ctime Changed again!

Обратите внимание, что до сих пор содержимое (данные) файла остается таким же, как и при его создании.


3. время

Наконец, давайте изменим содержимое файла, отредактировав файл.

$ echo 'Modify the DATA of the file' > testing
$ echo 'Modify the DATA of the file also change the file status' > testing
$ stat testing
  File: `testing'
  Size: 56          Blocks: 8          IO Block: 4096   regular file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 11:09:48.247345148 +0800  <-- mtime Changed!
Change: 2014-03-16 11:09:48.247345148 +0800  <-- ctime also Changed!

4. время рождения

Также обратите внимание, что более новая версия stat (например stat --version 8.13 в Ubuntu 12.04) имеет 4-ую метку времени - время рождения (время создания файла). Хотя это может не показывать правильное время на данный момент:

$ stat --version
stat (GNU coreutils) 8.13
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Michael Meskes.
$
$ stat birth_time
  File: `birth_time'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d  Inode: 4073946     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ bingyao)   Gid: ( 1000/ bingyao)
Access: 2014-03-16 10:46:48.838718970 +0800
Modify: 2014-03-16 10:46:48.838718970 +0800
Change: 2014-03-16 10:46:48.838718970 +0800
 Birth: -
Другие вопросы по тегам