
Estou tentando encontrar todos os arquivos que não foram tocados por 6 meses ou mais. Executei este comando, mas ele mostra apenas todos os arquivos que foram editados há 6 meses.
find . -type f -mtime 183 -exec ls -latr {} \;
Como eu faria isso para que durasse 6 meses ou mais?
Responder1
-mtime 183
é para arquivos cuja idade arredondada para o próximo período de 24 horas é igual a 183, portanto, para idades compreendidas entre 182*24*3600 segundos (exclusivo) e 183*24*3600 segundos (inclusive) (onde segundos são segundos Unix, isto é, tem uma duração variável que é a 86.400ª parte do dia terrestre, não a definição ISO de duração fixa do segundo. Portanto, todos os dias têm 86.400 segundos, não precisamos levar em conta os segundos bissextos).
Com -mtime +183
, você obtém arquivos cuja idade arredondada para o próximo período de 24 horas é estritamente superior a 183, de modo que para idades estritamente superiores a 183*24*3600 segundos.
Observe que o período de 24 horas não é necessariamente o mesmo quediadevido às mudanças de horário de verão em algumas regiões.
Com algumas find
implementações (FreeBSD, GNU), você também pode usar ! -newermt '6 months ago'
. mt
compara o m
tempo de odificação com o t
tempo dado como argumento.
Isso fornecerá arquivos modificados antes do mesmo dia do mês, mesma hora de 6 meses atrás, mas no caso do GNU find
(ao contrário do FreeBSD) ele não faz o ajuste do horário de verão (nos fusos horários onde o horário de verão se aplica), é isso fornece as informações como se estivesse em um fuso horário UTC. Se agora for 01/07/2016 às 13:00 (horário de verão), o FreeBSD find
reportará os arquivos modificados pela última vez antes de 01/01/2016 às 13:00 (horário de inverno), enquanto o GNU find
reportará os arquivos modificados pela última vez antes de 01/01/2016 12 :00 (horário de inverno). Também pode haver variações quando convocado nos dias 29, 30 ou 31 do mês e o mês de 6 meses atrás não possui essa data.
Responder2
Adicione um +
na frente do valor do dia. Na página de manual:
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
e
... When find figures out
how many 24-hour periods ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.
Embora isso se refira ao atime
teste, é o mesmo para os testes mtime
e ctime
.