
¿Existe un comando en Linux para verificar todas las marcas de tiempo de un archivo?
Estoy intentando ver las últimas fechas de modificación, creación y modificación del archivo.
Respuesta1
El comando se llamastat
.
$ 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
Si desea ajustar el formato, consulte las páginas de manual, ya que la salida es específica del sistema operativo y varía en Linux/Unix.
Generalmente, también puede obtener los tiempos a través de una lista de directorio normal:
ls -l
resultados la última vez que se modificó el contenido del archivo, elmtime
ls -lc
genera la última hora de modificación del estado del archivo, elctime
(¿Cual es la diferencia?)ls -lu
genera la hora del último acceso,atime
(aunque la utilidad de este concepto essujeto a discusión)
Y por supuesto, ctime
no registra cuándo se "creó" un archivo. La especificación POSIX define sólo tres marcas de tiempo, peroalgunos sistemas de archivos de Linuxalmacenar la hora de nacimiento/hora de creación.¿Cómo encontrar la fecha de creación del archivo?En una configuración tan compatible, se podría usar
stat --printf '%n\nmtime: %y\nctime: %z\natime: %x\ncrtime:%w\n'
Respuesta2
Solo hayTRESvalores de tiempo distintos almacenados para cada uno de sus archivos, según lo definido por elEstándar POSIX:http://pubs.opengroup.org/onlinepubs/9699919799/(verDefiniciones básicassección -> 4. Conceptos generales -> 4.8 Actualización de tiempos de archivos)
Cada archivo tiene tres marcas de tiempo distintas asociadas: la hora del últimoacceso a los datos, la hora del últimomodificación de datos, y la hora en queestado del archivo cambiado por última vez. Estos valores se devuelven en la estructura de características del archivo struct stat, como se describe en<sistema/stat.h>.
Y de<sistema/stat.h>:
atime is for Last data access timestamp.
mtime is for Last data modification timestamp.
ctime is for Last file status change timestamp.
Los siguientes ejemplos muestran la diferencia entre losun momento,tiempoytiempo, estos ejemplos están en GNU/Linux BASH. Puede usarlo stat -x
en Mac OS X u otro BSD Dist. para ver el formato de salida similar.
$ 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
Cuando se acaba de crear el archivo, las tres marcas de tiempo son las mismas.
1. un tiempo
Primero, vamosaccesolos datos del archivo leyéndolos ( less
o vim
), imprimiéndolos ( cat
) o copiándolos a otro archivo ( 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. tiempo
Ahora vamos acambiarel estado del archivo, cambiando el permiso ( chmod
) o renombrándolo ( 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!
Tenga en cuenta que hasta ahora, el contenido (datos) del archivo sigue siendo el mismo que cuando se creó.
3. mtime
Finalmente, vamosmodificarel contenido del archivo editándolo.
$ 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. hora de nacimiento
También tenga en cuenta que las versiones más nuevas stat
(por ejemplo, stat --version 8.13
en Ubuntu 12.04) tienen una cuarta marca de tiempo: lahora de nacimiento(hora de creación del archivo). Aunque puede que por ahora no muestre la hora correcta:
$ 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: -