eu executo este comando
find BAR -type f -mtime +1095 # older than 3 years
e encontre este arquivo:
BAR/foo.pdf
Então eu corro isso:
stat BAR/foo.pdf
Access: 2020-01-03 01:32:05.584393000 -0500
Modification: 2017-12-04 07: 59: 36.963225900 -0500
Change: 2020-01-02 10: 26: 28.907127100 -0500
# or
find BAR/foo.pdf -type f -printf "%p\n%a\n%c\n\n"
Fri Jan 3 01:32:05.5843930000 2020
Thu Jan 2 10:26:28.9071271000 2020
A data de 'Acesso' e 'Mudança' tem menos de 3 anos
e se uma corrida
find BAR -type f -ctime +1095 # older than 3 years
não ganhe nada
O que eu quero é excluir todos os arquivos que não foram usados (acessar ou alterar ou modificar) em 3 anos
PD: no exemplo, apenas 2 critérios são atendidos. Gostaria que meu comando procurasse por arquivos que atendam aos 3 critérios: Que não tenham sido acessados, modificados ou alterados por mais de 3 anos
Citando esta resposta :
A página man do find diz:
Então mtime corresponde a Modify, enquanto ctime corresponde a Change.
Os resultados estão corretos de acordo com os dados estatísticos:
Para tempo de acesso, você deve usar
atime
.find
combina testes usando implícito-a
(operador AND). No seu comando:já existem dois testes:
-type f
e-mtime +1095
. O comando pode ser escrito como:Você pode adicionar mais testes diretamente. Exemplo:
Cada um dos dois comandos acima imprimirá o nome do caminho de um arquivo se o arquivo corresponder a todos os quatro testes (
-type f
,-ctime +1095
,-mtime +1095
,-atime +1095
). Parece que é isso que você quer (mas note que sefind BAR -type f -ctime +1095
não lhe der nada, adicionar mais testes que devem corresponder também não lhe dará nada; isso é apenas porque não há arquivos regulares queBAR
correspondam aos seus critérios, em geral o comando pode encontrar algo) .Com (implícito ou explícito)
-a
, se os testes anteriores-a
falharem, os testes posteriores-a
não serão realizados (porque eles não podem alterar o resultado). Algumas implementaçõesfind
mudam a ordem dos testes para desempenho, tentando não quebrar a lógica.Há também
-o
(operador OR). Seu uso às vezes não é intuitivo porque-a
tem precedência (compare esta minha resposta ). E há!
para negar um teste. Em geral, você pode combinar vários testes para construir qualquer lógica (?) que desejar (consulte a seção "Teoria" desta outra resposta minha ).Para realmente excluir os arquivos que você precisa
-delete
ou-exec rm {} +
(veja esta pergunta para saber a diferença).