1. hora

1. hora

Existe um comando no Linux para verificar todos os carimbos de data/hora de um arquivo?

Estou tentando ver as últimas datas modificadas, criadas e tocadas no arquivo.

Responder1

O comando é chamadostat.

$ 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

Se você quiser ajustar o formato, consulte as páginas de manual, pois a saída é específica do sistema operacional e varia no Linux/Unix.

Geralmente, você também pode obter os horários por meio de uma listagem de diretório normal:

  • ls -lsaídas da última vez que o conteúdo do arquivo foi modificado, omtime
  • ls -lcgera a última hora da modificação do status do arquivo, o ctime(Qual é a diferença?)
  • ls -lugera o último horário de acesso, o atime(embora a utilidade deste conceito sejasujeito a discussão)

E claro, ctimenão registra quando um arquivo foi “criado”. A especificação POSIX define apenas três carimbos de data/hora, masalguns sistemas de arquivos Linuxarmazenar Hora de Nascimento/Hora de Criação.Como encontrar a data de criação do arquivo?Em tal configuração suportada, pode-se usar

stat --printf '%n\nmtime: %y\nctime: %z\natime: %x\ncrtime:%w\n'

Responder2

Há apenasTRÊSvalores de tempo distintos armazenados para cada um dos seus arquivos, conforme definido peloPadrão POSIX:http://pubs.opengroup.org/onlinepubs/9699919799/(verDefinições básicasseção -> 4. Conceitos Gerais -> 4.8 Atualização de Tempos de Arquivo)

Cada arquivo possui três carimbos de data e hora distintos associados: a hora da últimaAcesso de dados, a hora do últimomodificação de dados, e o horáriostatus do arquivo alterado pela última vez. Esses valores são retornados na estrutura de características do arquivo struct stat, conforme descrito em<sys/stat.h>.

E de<sys/stat.h>:

atime is for Last data access timestamp.
mtime is for Last data modification timestamp.
ctime is for Last file status change timestamp.

Os exemplos a seguir mostram a diferença entre osum tempo,mtimeectime, esses exemplos estão no GNU/Linux BASH. Você pode usar stat -xno Mac OS X ou outro BSD Dist. para ver o formato de saída semelhante.

$ 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

Quando o arquivo acaba de ser criado, os três carimbos de data e hora são iguais.


1. hora

Primeiro, vamosacessoos dados do arquivo lendo-o ( lessou vim), imprimindo-o ( cat) ou copiando-o para outro arquivo ( 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. hora

Agora vamosmudaro status do arquivo, alterando a permissão ( chmod) ou renomeando-o ( 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!

Observe que até agora, o conteúdo (dados) do arquivo ainda é o mesmo de quando foi criado.


3. hora

Finalmente, vamosmodificaro conteúdo do arquivo editando o arquivo.

$ 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 do nascimento

Observe também que as versões mais recentes stat(por exemplo, stat --version 8.13no Ubuntu 12.04) têm um quarto carimbo de data/hora - oHora do nascimento(hora de criação do arquivo). Embora possa não mostrar a hora correta por enquanto:

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

informação relacionada