Usando o comando find com o teste -cnewer

2

Estou tentando entender a saída do comando find com o -cnewer test. Ao fazer alguns testes limitados, é isso que eu recebo.

Primeiro, criei um arquivo:

cd ~/Documents
touch file1.txt

Depois, esperei alguns minutos antes de criar outro arquivo:

touch file2.txt

Depois, decidi comparar o registro de data e hora do conteúdo com o registro de data e hora dos metadados ao fazer isso:

ls -lht (for content timestamp)
-rw-rw-r-- 1 mason mason    0 Aug 11 01:19 file2.txt
-rw-rw-r-- 1 mason mason    0 Aug 11 01:17 file1.txt

E então:

ls -lhtc (for metadata timestamp)
-rw-rw-r-- 1 mason mason    0 Aug 11 01:19 file2.txt
-rw-rw-r-- 1 mason mason    0 Aug 11 01:17 file1.txt

Até agora não há surpresas, já que não fiz nada para alterar o registro de data e hora dos metadados.

Agora, se eu digitar:

chmod 664 file1.txt

para alterar o registro de data e hora dos metadados e, em seguida, observe a saída novamente:

ls -lhtc
-rw-rw-r-- 1 mason mason    0 Aug 11 01:23 file1.txt
-rw-rw-r-- 1 mason mason    0 Aug 11 01:19 file2.txt

file1.txt aparece na primeira posição na saída ls -lhtc , mas ainda na segunda posição na saída ls -lht , também como esperado.

Finalmente, se eu decidir digitar:

cd ~/Documents
find . -cnewer file1.txt

Eu recebo:

.
./file2.txt
./file1.txt

Aqui estão as perguntas que tenho:

  1. O que -cnewer procura? Ele verifica se o registro de data e hora dos metadados foi alterado ou se o registro de data e hora conteúdo foi alterado? Isso faz as duas coisas? Tenho certeza de que faz as duas coisas, mas gostaria de ter certeza.

  2. Se -cnewer fizer as duas coisas, por que file1.txt acaba na saída? Entendo porque file2.txt acaba na saída, pois find procurará por um timestamp de conteúdo mais recente que file1.txt , mas ainda não entendi porque file1.txt acaba na saída. Afinal, não há nenhum arquivo com um carimbo de data e hora de metadados mais recente na ls -lhtc output do que file1.txt .

por John_Patrick_Mason 12.08.2017 / 00:21

1 resposta

2

Do manual (negrito):

  

- Teste: -anewer arquivo
  - Teste: -cnewer arquivo
  - Teste: -newer arquivo
  Verdadeiro se o arquivo foi acessado pela última vez (ou seu status foi alterado ou   modificado) mais recentemente do que o arquivo foi modificado . [...]

Assim, os testes comparam o atime, ctime e mtime respectivamente com o mtime do arquivo especificado.

Se você quiser comparar o ctime com o ctime, use o -newerXY tests:

find . -newercc file1.txt

Portanto, os testes -*newer são abreviados para -newer*m .

    
por Olorin 12.08.2017 / 07:17