Obtenga la última fecha de modificación del archivo en Linux


149

Soy nuevo en Linux. Estoy usando la línea de comandos. Estoy tratando de ver la última fecha de modificación de un archivo. ¿Cómo hago eso en Linux desde la línea de comandos?


25
ls -ltambién funciona ...
Daniel Beck


1
@DanielBeck es la fecha de la fecha de ls -lmodificación o la fecha de creación?
Bruno Bieri

1
@BrunoBieri Es la fecha de modificación. Ver man ls. Los sistemas de archivos típicos de Linux ni siquiera rastrean la fecha de creación; consulte la respuesta aceptada para conocer los tipos de fechas que se siguen.
Daniel Beck

Respuestas:


133

Como lo menciona @ edvinas.me, statle brinda información variada sobre el archivo, incluida la última fecha de modificación.

Al principio, me confundieron con Modificar y Cambiar , solo para aclarar, statlas listas de salida:

  • El acceso muestra la hora del último acceso a los datos (por ejemplo, lectura).
  • Modificar muestra la hora de la última modificación de datos.
  • El cambio muestra la última vez que se modificó el estado del archivo.

Por ejemplo:

~ $ touch foo
~ $ stat foo
File: ‘foo’
Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fc01h/64513d    Inode: 410397      Links: 1
Access: (0644/-rw-r--r--)  Uid: (80972/ etomort)   Gid: (18429/  eem_tw)
Access: 2015-09-21 12:06:11.343616258 +0200
Modify: 2015-09-21 12:06:11.343616258 +0200
Change: 2015-09-21 12:06:11.343616258 +0200
Birth: -

~ $ echo "Added bar to foo file" >> foo
~ $ stat foo
File: ‘foo’
Size: 42            Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d    Inode: 410654      Links: 1
Access: (0644/-rw-r--r--)  Uid: (80972/ etomort)   Gid: (18429/  eem_tw)
Access: 2015-09-21 12:09:31.298712951 +0200
Modify: 2015-09-21 12:09:31.298712951 +0200
Change: 2015-09-21 12:09:31.302713093 +0200
Birth: -

~ $ chmod 444 foo
~ $ stat foo
File: ‘foo’
Size: 42            Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d    Inode: 410654      Links: 1
Access: (0444/-r--r--r--)  Uid: (80972/ etomort)   Gid: (18429/  eem_tw)
Access: 2015-09-21 12:09:31.298712951 +0200
Modify: 2015-09-21 12:09:31.298712951 +0200
Change: 2015-09-21 12:10:16.040310543 +0200
Birth: -

65

Use el statcomando para eso:

$ stat file

27
Si desea solo la última fecha de modificación (en forma legible para humanos), usestat -c '%y' file
Adam Taylor

35

Otra forma que es más flexible es usar date -r. De man date:

-r, --reference=FILE
       display the last modification time of FILE

Esto tiene la ventaja de permitirle especificar el formato de salida, p. Ej.

$ date -r foo
Thu Aug 31 10:36:28 AEST 2017
$ date -r foo -R
Thu, 31 Aug 2017 10:36:28 +1000
$ date -r foo -u
Thu Aug 31 00:36:28 UTC 2017
$ date -r foo +%s
1504139788

3
Sí, muy útil, gracias. Aquí hay una función bash que cambiará el nombre de un archivo para que tenga el prefijo de la hora modificada: function mvfilestime () {if [x "$ {1}" = "x"]; luego echo "mvfilestime: Falta el argumento del archivo para mv" más f = $ (fecha + "% Y-% m-% d-% H-% M" -r $ {1}) - $ {1} echo mv $ {1} $ {f} mv $ {1} $ {f} fi}
Viajero

perfecto, debería ser la respuesta aceptada
AB

15

ls -l Debería hacer el trabajo.

Ejemplo:

#> ls -l /home/TEST/
total 16

-rw-r--r--   1 rfmas1   nms          949 Nov 16 12:21 create_nd_lists.py

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 enb_list

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 nb_list

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 nodes_ip.txt

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 rnc_list

2

Si el archivo está en otro servidor web, me gusta httpie( docs ).

Instalación

pip install httpie --user

Uso

El -hcomando solo da el encabezado. El patrón es

http -h [url] | grep 'Last-Modified\|Date'

Ejemplo:

$ http -h https://martin-thoma.com/author/martin-thoma/ | grep 'Last-Modified\|Date'
Date: Fri, 06 Jan 2017 10:06:43 GMT
Last-Modified: Fri, 06 Jan 2017 07:42:34 GMT

El Datees importante ya que esto reporta la hora del servidor, no con la hora local. Además, no todos los servidores envían Last-Modified(por ejemplo, el superusuario parece no hacerlo).


2

1) Directorio de archivos de lista con la última fecha / hora modificada

Para enumerar los archivos y mostrar los últimos archivos modificados en la parte superior, utilizaremos las -ltopciones con el lscomando.

$ ls -lt /run
output
total 24
-rw-rw-r--.  1 root utmp 2304 Sep  8 14:58 utmp
-rw-r--r--.  1 root root    4 Sep  8 12:41 dhclient-eth0.pid
drwxr-xr-x.  4 root root  100 Sep  8 03:31 lock
drwxr-xr-x.  3 root root   60 Sep  7 23:11 user
drwxr-xr-x.  7 root root  160 Aug 26 14:59 udev
drwxr-xr-x.  2 root root   60 Aug 21 13:18 tuned

https://linoxide.com/linux-how-to/how-sort-files-date-using-ls-command-linux/


1

Para específicamente acaba de obtener la fecha stat -c %y file | cut -d' ' -f1

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.