1. un tiempo

1. un tiempo

¿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 -lresultados la última vez que se modificó el contenido del archivo, elmtime
  • ls -lcgenera la última hora de modificación del estado del archivo, el ctime(¿Cual es la diferencia?)
  • ls -lugenera la hora del último acceso, atime(aunque la utilidad de este concepto essujeto a discusión)

Y por supuesto, ctimeno 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 -xen 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 ( lesso 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.13en 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: -

información relacionada