Usando find -mmin para localizar arquivos com hora de modificação no futuro

9

Eu posso usar

find . -mmin -5

para encontrar arquivos alterados nos últimos 5 minutos. No entanto, se eu tentar encontrar arquivos com tempo de modificação no futuro, o número negativo findse recusa a fazê-lo:

find . -mmin --1

Existe uma maneira de dar tempo de modificação futura ao Linux padrão find?

Muxecóide
fonte

Respostas:

9

Para encontrar arquivos modificados pelo menos 5 dias no futuro, use:

find . -newermt "5 days"

A sintaxe para a especificação de horário corresponde àquela para date -d. Consulte man findpara obter informações sobre o switch nomeado -newerXYpara obter mais informações.

Não é possível usar, por exemplo, -mminpara fazer isso. Foi relatado como um bug contra o GNU find , e foi resolvido implementando -newerXYno findutils 4.3.3 (~ 2007) como mostrei acima.


Aparentemente, não foi o GNU que foi usado, mas o BusyBox.

Você poderá criar um arquivo temporário com touch -duma data no futuro e usar a -neweropção para find:

touch -d "+5 days" tmpfile
find . -newer tmpfile

O BusyBox touchnão suporta esse formato de data, mas o princípio é o mesmo e seus findsuportes -newer. A criação do arquivo de referência com uma data correta é deixada como um exercício para o leitor (sempre conveniente para escrever).

Daniel Andersson
fonte
Obrigado. Meu problema é que minha descoberta é antiga, BusyBox incorporado e não binutil. Aparentemente, o modo linux padrão não funciona aqui. :(
Muxecoid
@Muxecoid: Atualizei minha resposta com algumas observações do BusyBox.
22612 Daniel Andersson
Isso acabou me poupando problemas em uma nova máquina na qual eu havia feito algo dez horas no futuro por acidente (deslocamento de fuso horário aplicado a um relógio de hardware já compensado) e, depois de fixar o relógio, um configurescript reclamou que as coisas estavam no futuro (por um mais ou menos uma hora e meia): find . -newermt '1 hour' | xargs touch -d '-9 hours'e posso continuar. :-)
Chris Morgan