Como listar arquivos que foram alterados em um determinado intervalo de tempo?

33

Como posso listar recursivamente todos os arquivos que foram alterados entre 22.12.2011 e 24.12.2011?

    
por clamp 16.01.2012 / 23:03

5 respostas

22

Em geral, quando você procura arquivos em um diretório e em seus subdiretórios de forma recursiva, use find .

A maneira mais fácil de especificar um intervalo de datas com find é criar arquivos nos limites do intervalo e usar o predicado -newer .

touch -t 201112220000 start
touch -t 201112240000 stop
find . -newer start \! -newer stop
    
por 17.01.2012 / 01:11
32

Usando a solução de Gilles e depois de ler o homem encontre (1) novamente encontrou uma solução mais simples. A melhor opção é o -newerXY. Os sinalizadores m e t podem ser usados.

m   The modification time of the file reference
t   reference is interpreted directly as a time

Então a solução é

find . -type f -newermt 20111222 \! -newermt 20111225

O limite inferior no inclusivo e o limite superior são exclusivos, então adicionei 1 dia a ele! E é recursivo. Funciona bem em encontrar v4.5.9.

    
por 28.03.2013 / 09:58
12

Além das respostas já fornecidas, observe que você pode especificar suas datas diretamente:

find -type f -newermt "2011-12-22" \! -newermt "2011-12-24"

ou

find -type f -newermt "2011-12-22 00:00:00" \! -newermt "2011-12-24 13:23:00"

se você também quiser especificar a hora.

    
por 11.05.2015 / 20:42
6

Supondo que você não precise de precisão nos segundos, isso deve funcionar.

find . -type f -mmin -$((('date +%s'-'date -d 20111222 +"%s"')/60)) \! -mmin +$((('date +%s'-'date -d 20111224 +"%s"')/60))

EDITAR: % decmin alterado para mmin após o comentário de @Eelvex. EDITAR: '\!' faltando

    
por 16.01.2012 / 23:25
3

find pode ter uma data / hora com formato ISO, portanto, para um servidor no UTC, por exemplo, você pode especificar um deslocamento de um número de horas de onde estiver. Isso também cuida de ter que adicionar um dia, já que você também está comparando o tempo:

find -type f -newermt 20111224T0800 \! -newermt 20111225T0800
    
por 09.03.2015 / 19:58