Concordando que o tempo de mudança (também conhecido como ctime ) é o recurso mais portátil que pode ser observado em um sistema de arquivos * nix, o OP pode precisar de mais detalhes.
POSIX <sys/stat.h> documenta três carimbos de hora para cada arquivo, diretório, dispositivo um sistema de arquivos: acesso , modificação e alterado . Os dois primeiros podem ser configurados com valores arbitrários usando utimes (amplamente disponível, embora marcado como um extensão), mas o último não pode. Ele é atualizado para a hora atual como um efeito colateral de muitas chamadas do sistema, incluindo utimes . É mais provável que seja atualizado por chmod , mas também mover ou renomear um arquivo também faz isso.
No entanto, se você estiver procurando por pistas sobre quando um arquivo foi criado, o ctime é uma pista tão boa quanto você provavelmente encontrará. O tempo de acesso também pode ser útil, mas alguns sistemas de arquivos podem ser configurados para evitar atualizações. Olhe primeiro em ctime .
O programa find (também documentado em POSIX) inclui uma opção para usar < em> ctime :
-ctimen
The primary shall evaluate as true if the time of last change of file status information subtracted from the initialization time, divided by 86400 (with any remainder discarded), is n.
O 86400 refere-se ao número de segundos em um dia; n é um inteiro (o número de dias). Algumas implementações de find fornecem unidades menores, mas elas não estão no POSIX.
Você poderia usá-lo assim para obter uma lista de arquivos alterados no último dia:
find . -ctime -1 -print
Algumas implementações podem permitir um valor não-inteiro para n , mas o POSIX é explícito aqui:
In the descriptions, wherever n is used as a primary argument, it shall be interpreted as a decimal integer optionally preceded by a plus ( '+' ) or minus-sign ( '-' )
Por isso, não é possível ter uma extensão compatível com POSIX nessa direção. Outras implementações podem fornecer opções alternativas que (por exemplo) especificam a diferença de tempo como um número de minutos. Você deve consultar o manual de find para o sistema que está usando, para ver se isso se aplica a você.
Um dos comentários mencionou alguns sistemas de arquivos com uma extensão (também não padrão) para obter o tempo real de criação do arquivo. Vários sistemas tiveram isso ao longo dos anos, incluindo
- VMS (mais tarde renomeado para OpenVMS ), com criação , backup , revisão e expiração registros de data e hora.
- Windows , com criação , acesso e modificação registros de data e hora (observando que, embora os nomes sejam semelhantes, o as regras de atualização diferem do POSIX).
Existe uma discussão mais pertinente em Como obter o arquivo data de criação no Linux? , que menciona um membro st_birthtime para a estrutura stat . Isso está documentado em páginas de manual para o OSX stat(2) e FreeBSD stat(2) , bem como no sistema específico do FreeBSD stat(1) e os utilitários stat(1) da OSX. (O NetBSD também documenta esta extensão). Chame isso de uma característica dos modernos sistemas BSD, para breve.
O utilitário find correspondente também suporta a extensão (veja, por exemplo, OSX encontrar (1) ):
all of the -B* birthtime related primaries are extensions to IEEE Std 1003.1-2001 (''POSIX.1'').
Outros sistemas não possuem essa extensão. Para discussão:
- Re: st_birthtime de Eric Blake na lista de discussão do Cygwin comentando sobre o fato de o Windows suportar isso, mas não POSIX.
- Linux: Como encontrar a data de criação do arquivo? postando por < em> scott afirma que existem alguns sistemas de arquivos que suportam um recurso análogo com um nome diferente.