Isso depende exatamente do que você quer dizer com "aberto", mas, em geral, sim. Existem três timestamps normalmente gravados:
-
mtime
- atualizado quando o conteúdo do arquivo é alterado. Este é o tempo de arquivo "padrão" na maioria dos casos. -
ctime
- atualizado quando o arquivo ou seus metadados (proprietário, permissões) são alterados -
atime
- atualizado quando o arquivo é lido
Assim, geralmente, o que você deseja ver é o atime
de um arquivo. Você pode obter isso com stat
ou com ls
. Você pode usar ls -lu
para fazer isso, embora eu prefira usar ls -l --time=atime
(que deve ser suportado em quase todas as distribuições Linux modernas), porque eu não o uso com frequência e, quando o faço, posso me lembrar dele melhor. E para classificar por hora, adicione o -t
flag a ls. Então lá vai você.
Há uma grande advertência, no entanto. A atualização do atime toda vez que um arquivo é lido causa muito IO desnecessário em geral, reduzindo a velocidade de tudo. Portanto, a maioria das distribuições Linux agora é a opção noatime
filesystem mount, que basicamente mata atimes, ou então relatime
, que só atualiza atimes depois que um limite passou (normalmente uma vez por dia) ou se o arquivo foi realmente modificado desde a leitura anterior. Você pode descobrir se essas opções estão ativas executando o comando mount
.
Além disso, observe que os tempos de acesso são por inode, não por nome de arquivo, portanto, se você tiver hardlinks, a leitura de um deles atualizará todos os nomes que se referem ao mesmo arquivo.
E, esteja ciente de que c não é "criação"; a criação não é rastreada por sistemas de arquivos Unix / Linux, o que parece estranho, mas na verdade faz sentido porque o sistema de arquivos não tem como saber se é o original - talvez o arquivo tenha sido criado há quarenta anos e copiado aqui. E, de fato, muitos editores de arquivos trabalham fazendo cópias do original. Se você precisar dessas informações, é melhor usar um sistema de controle de versão como git
.