Questão Obter a última data modificada do arquivo no Linux


Eu sou novo no Linux. Eu estou usando a linha de comando. Estou tentando ver a data da última modificação de um arquivo. Como faço isso no Linux a partir da linha de comando?


95


origem


ls -l também funciona ... - Daniel Beck♦
Duplicado de superuser.com/questions/612099/… - Oldskool
@DanielBeck é a data de ls -l a data modificada ou a data de criação? - Bruno Bieri
@ BrunoBieri É a data da modificação. Vejo man ls. Os sistemas de arquivos típicos do Linux nem rastreiam a data de criação - veja a resposta aceita para os tipos de datas controlados. - Daniel Beck♦


Respostas:


Como mencionado por @ edvinas.me, stat informa várias informações sobre o arquivo, incluindo a data da última modificação.

No começo, eu estava confuso com Modificar e mudança, Só para esclarecer, stat listas de saída:

  • Acesso mostra a hora do último acesso a dados (por exemplo, leitura).
  • Modificar mostra a hora da última modificação de dados.
  • mudança mostra a hora em que o status do arquivo foi alterado pela última vez.

Por exemplo:

~ $ 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: -

78





Usar stat comando para isso:

$ stat file

54



Se você quiser apenas a data da última modificação (em formato legível), use stat -c '%y' file - Adam Taylor


ls -l deve fazer o trabalho.

Exemplo:

#> 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

13





Outra maneira que é mais flexível é usar date -r. A partir de man date:

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

Isso tem a vantagem de permitir que você especifique o formato de saída, por exemplo,

$ 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

13



Sim, muito útil, obrigado. Aqui está uma função bash que irá renomear um arquivo a ser prefixado pelo tempo modificado: function mvfilestime () {if [x "$ {1}" = "x"]; então echo "mvfilestime: Argumento perdido de arquivo para mv" senão f = $ (date + "% Y-% m-% d-% H-% M" -r $ {1}) - $ {1} echo mv $ {1} $ {f} mv $ {1} $ {f} fi} - Traveler


Se o arquivo está em outro servidor, eu gosto httpie (docs).

Instalação

pip install httpie --user

Uso

o -h comando dá apenas o cabeçalho. O padrão é

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

Exemplo:

$ 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

o Date é importante, pois isso informa a hora do servidor, não a hora local. Além disso, nem todo servidor envia Last-Modified (por exemplo, o superusuário parece não fazer isso).


2