
Есть ли в Linux команда для проверки всех временных меток файла?
Я пытаюсь увидеть даты последнего изменения, создания и просмотра файла.
решение1
Команда называется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'
решение2
Есть толькоТРИотдельные значения времени, хранящиеся для каждого из ваших файлов, как определеноСтандарт POSIX:http://pubs.opengroup.org/onlinepubs/9699919799/(видетьБазовые определенияраздел -> 4. Общие понятия -> 4.8 Обновление времени файла)
Каждый файл имеет три различных связанных временных метки: время последнегодоступ к данным, время последнегомодификация данных, и времястатус файла последний раз изменен. Эти значения возвращаются в структуре характеристик файла struct stat, как описано в<sys/stat.h>.
И из<sys/stat.h>:
atime is for Last data access timestamp.
mtime is for Last data modification timestamp.
ctime is for Last file status change timestamp.
Следующие примеры показывают разницу междувремя,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 test
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: -