A alteração de um arquivo em um diretório não altera a hora do diretório?

1

Eu quero encontrar um arquivo que criei recentemente, mas não me lembro de nada e só posso imaginar que ele está sob um diretório indiretamente com qualquer profundidade possível.

  1. Eu inspecionei os tempos de todos os subdiretórios de um diretório, mas seus tempos são todos mais antigos que o tempo que criei o arquivo. Eu me pergunto por que o tempo de um diretório não é atualizado quando um arquivo é?
  2. Se fosse você, como você encontraria o arquivo? Usando find e Alguma opção para o tempo? Obrigado.
por Tim 27.02.2015 / 14:08

2 respostas

2

A hora da modificação de um diretório, como qualquer outro arquivo (note como diretórios são chamados diretórios (uma lista de nome / mapeamentos como um diretório de telefone) e não pastas ) é atualizado sempre que o conteúdo é modificado.

É quando um arquivo é adicionado (vinculado), removido (desvinculado) ou renomeado nele.

Tenha em atenção que os ficheiros podem ser ligados a vários diretórios. O sistema não mantém uma lista ao vivo de qual diretório nenhum arquivo está vinculado (para um dado descritor de arquivo aberto para gravação, ele nem mesmo controla qual caminho foi usado para abrir o arquivo (cujos componentes podem ser renomeados a qualquer momento, de qualquer maneira)), e se fosse para atualizar o horário de modificação de todos os diretórios que o arquivo está vinculado, juntamente com todos os seus ancestrais, de volta para / , ele terminaria fazendo apenas isso.

Geralmente, sua única opção é procurar a hora da modificação de cada arquivo no sistema de arquivos.

Você pode usar find como mostrado pela Corentin , ou evitar ter que ler todos esses diretórios, você pode ver os tempos de modificação de todos os inodes na tabela inode (embora eu não esteja ciente de nenhuma ferramenta que faça isso).

Alguns sistemas de arquivos, como btrfs , podem lhe dar uma pista sobre quais foram os arquivos modificados mais recentemente:

$ sudo btrfs sub find-new / -1
transid marker was 2273028
$ sudo btrfs sub find-new / 2273020
inode 60319801 file offset 212992 len 4096 disk start 8350875648 offset 0 gen 2273024 flags NONE root/screenlog.2
inode 60319801 file offset 217088 len 28672 disk start 8403632128 offset 0 gen 2273023 flags NONE root/screenlog.2
inode 61045822 file offset 360448 len 4096 disk start 1111568384 offset 0 gen 2273022 flags NONE var/log/apache2/access.log
inode 61045835 file offset 2326528 len 8192 disk start 7824994304 offset 0 gen 2273024 flags NONE var/log/syslog
inode 61045840 file offset 57344 len 8192 disk start 1517305856 offset 0 gen 2273023 flags NONE var/log/kern.log
[...] 
    
por 27.02.2015 / 16:28
3

eu usaria

find <PARENT_DIR> -type f -mtime 1

Com 1 da hora da última modificação em dias (você pode colocar o prefixo - ou + para indicar "menos de X dias" ou "mais de X dias"): assim, se você quiser o arquivo modificado nos últimos 3 dias, você vai fazer -mtime -3

    
por 27.02.2015 / 14:12