find
tem um bom suporte para encontrar arquivos mais modificados há menos de X dias, mas como posso usar find
para localizar todos os arquivos modificados antes de uma determinada data?
Não consigo encontrar nada na find
página de manual para fazer isso, apenas para comparar com o tempo de outro arquivo ou verificar as diferenças entre o tempo criado e o agora. Fazer um arquivo com o tempo desejado e comparar com ele é a única maneira de fazer isso?
Não, você pode usar uma string de data/hora.
De
man find
:Exemplo:
Não diretamente relacionado à pergunta, mas pode ser interessante para alguns que tropeçam aqui.
O comando find não suporta diretamente o parâmetro -older para localizar arquivos mais antigos do que alguma data necessária, mas você pode usar a declaração negate (usando o exemplo de resposta aceita):
retornará arquivos mais antigos que a data fornecida.
Se você tiver apenas '-newer file', poderá usar esta solução alternativa:
homem toque:
Supondo que seu touch tenha essa opção (o meu é touch 5.97).
este comando find encontrará arquivos modificados nos últimos 20 dias.
Você pode adicionar limitações adicionais como:
o mesmo que antes, mas só encontra arquivos que terminam com '.txt'.
Apenas para adicionar - você pode até usar dois argumentos newermt para pesquisar em um intervalo de tempo:
para encontrar todos os arquivos de março de 2007.
assim:
Isso fornecerá arquivos anteriores a 01-01-2015 em seu diretório atual.
https://muzaffarmahmoodblog.wordpress.com/2019/07/11/linux-command-to-remove-files-older-than-2015-in-a-directory/
Você poderia usar um script como este
Salve-o em seu $PATH como "newerthan" e torne-o executável.
Então você pode encontrar o arquivo modificado após uma determinada data como esta:
ou
ou
Isso deve fazer o que você quer. Eu não acho que há uma maneira construída para conseguir isso de outra forma.
se a sua data estiver formatada de forma que seja boa para comparação,
É a resposta correta para esta pergunta (encontre arquivos modificados antes dos últimos 20 dias).