Listar arquivos do tempo X para o horário Y

1

Como listar todos os arquivos criados entre os horários de 'x' a 'y'? Quero listar os arquivos criados entre "29 de dezembro de 2014 às 18:00" e "30 de dezembro de 2014 às 18:00". Usando ls ou stat?

    
por Vish 30.12.2014 / 09:34

1 resposta

2

A maioria dos sistemas não rastreia a data de criação dos arquivos .

Se o seu fizer e tiver o GNU / BSD, por exemplo, se for OSX , você pode usar seu predicado -newerBt para comparar a hora de criação do arquivo (" b irth ") com um tempo específico.

find -newerBt "29-dec-2014 18:00" ! -newerBt "30-dec-2014 18:00"

Isso atravessa subdiretórios recursivamente. Se você quiser apenas arquivos no diretório atual, faça isso

find -mindepth 1 -maxdepth 1 -newerBt "29-dec-2014 18:00" ! -newerBt "30-dec-2014 18:00"

Se o seu sistema não acompanhar os horários de criação, você poderá usar o horário da modificação. Substitua -newerBt por -newermt .

Nem ls nem stat oferecem uma maneira de filtrar arquivos por hora. Tudo o que eles podem fazer é listar os timestamps dos arquivos, e filtrar a saída para um intervalo de tempo não é fácil. find é a ferramenta certa para este trabalho.

POSIX find só pode comparar o timestamp de um arquivo com o de outro arquivo, então A maneira portátil de filtrar arquivos em um intervalo de tempo é criar arquivos de limite. Você só pode filtrar a hora da modificação, o POSIX não define um tempo de criação.

touch -t 201412291800 /tmp/start
touch -t 201412301800 /tmp/stop
find . -newer /tmp/start ! -newer /tmp/stop

ou se você não quiser recorrer

find . ! -name . -prune -newer /tmp/start ! -newer /tmp/stop
    
por 31.12.2014 / 00:41