find mtime e ctime opções

3

Acabei de criar um arquivo de texto yyy no meu diretório pessoal. Eu modifiquei ambos com touch yyy e editei manualmente.

Então eu queria encontrar esse arquivo (e outros) via:

find ~/ -type f -mtime 1 -ctime 1 | grep yyy

mas yyy não é exibido. No homem de find está escrito:

-ctime n: File's status was last changed n*24 hours ago. ...

-mtime n: File's data was last modified n*24 hours ago. ...

Então, minha primeira pergunta é:

Por que não é encontrado yyy

Minha segunda pergunta é:

O status do arquivo alterado significa: Conteúdo alterado de arquivo & permissões de arquivo & ...?

Dados do arquivo modificados significam: Conteúdo alterado do arquivo?

    
por FloHe 18.01.2017 / 13:22

1 resposta

4

Sim, "dados do arquivo modificado" ( mtime ) significa que o conteúdo foi modificado. Essa data pode ser alterada manualmente (por exemplo, com touch ).

Sim, "status do arquivo alterado" ( ctime ) significa que o conteúdo foi alterado ou os metadados do arquivo (permissão, proprietário etc.). Isso não pode ser alterado manualmente.

Exemplo:

$ date > foo
$ ls -l --full-time foo; ls -lc --full-time foo     # Both times have changed
-rw-r--r-- 1 xhienne xhienne 29 2017-01-18 13:40:07.677161702 +0100 foo
-rw-r--r-- 1 xhienne xhienne 29 2017-01-18 13:40:07.677161702 +0100 foo

$ chmod o-r foo
$ ls -l --full-time foo; ls -lc --full-time foo     # Only ctime has changed
-rw-r----- 1 xhienne xhienne 29 2017-01-18 13:40:07.677161702 +0100 foo
-rw-r----- 1 xhienne xhienne 29 2017-01-18 13:40:29.601161310 +0100 foo

$ date >> foo
$ ls -l --full-time foo; ls -lc --full-time foo     # Again, both times have changed
-rw-r----- 1 xhienne xhienne 58 2017-01-18 13:40:51.297160921 +0100 foo
-rw-r----- 1 xhienne xhienne 58 2017-01-18 13:40:51.297160921 +0100 foo

Seu arquivo não foi encontrado porque os find predicam -mtime 1 e -ctime 1 pesquisam um arquivo que foi modificado ontem (mais exatamente entre 24h e 48h atrás). Para um arquivo que é modificado hoje, use -mtime 0 ou -mtime -1 (mesmo para -ctime ).

Exemplo:

$ find -name foo -mtime 1 -ctime 1

$ find -name foo -mtime 0 -ctime 0
./foo

$ find -name foo -mtime -1 -ctime -1
./foo
    
por 18.01.2017 / 13:36