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?

usuario70192
fuente
25
ls -ltambién funciona ...
Daniel Beck
1
Duplicado de superuser.com/questions/612099/…
Oldskool
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: -
Nephewtom
fuente
65

Use el statcomando para eso:

$ stat file
phoops
fuente
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
Gavilán
fuente
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
Linh Hoang
fuente
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).

Martin Thoma
fuente
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/

Jon Harper
fuente
1

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

Levi Uzodike
fuente