Use 'find' para determinar arquivos modificados ontem

3

Tenho certeza de que essa é uma pergunta antiga com uma resposta simples, mas tentei todas as combinações que sei e não encontrei nada. E pesquisar no Google não é nada agradável, pois a pesquisa nesse tópico gera centenas de maneiras de "encontrar a data de ontem usando o comando date".

De qualquer forma, estou tentando usar find para selecionar uma lista de arquivos que foram modificados ontem. O objetivo é selecionar os arquivos de log de ontem de um diretório para fazer algo específico com eles. O diretório contém vários dias de saída de log.

O melhor que posso obter é encontrar o retorno dos arquivos de ontem com os arquivos de hoje listados também. Eu não quero ver os arquivos de hoje - só ontem.

Eu também adicionarei o gotcha : este é o AIX, NÃO o GNU encontrado na maioria das distribuições do Linux. Então -daystart não é uma opção disponível para mim. (Pensei nisso já!)

Alguém sabe uma forma eficaz de listar os arquivos de ontem usando o find no AIX?

    
por Corey S. 07.10.2009 / 16:50

4 respostas

5

Uma possibilidade: construa o GNU 'find' na sua caixa e use isso em vez do estoque 'find'.

Ou, se o AIX encontrar o teste -newer, você poderá fazer algo assim:

# midnight oct 7
touch -t 10070000 today.ref
# midnight oct 6
touch -t 10060000 yesterday.ref

find /dir -newer yesterday.ref -a \! -newer today.ref -print
rm today.ref yesterday.ref
    
por 07.10.2009 / 17:20
1

Você pode deduzir o número de minutos do horário atual desde a meia-noite e usar -mmin :

min=$(date +%M); currtime=$(($(date +%k)*60 + ${min#0*} )); find /some/dir -mmin -$((currtime + (24 * 60))) -a -mmin +$((${currtime} + 1))

Você pode precisar fazer alguns ajustes nos deslocamentos. Eu não tenho muitos arquivos nos momentos certos para fazer muitos testes de caso de borda.

    
por 07.10.2009 / 18:39
0

Dependendo do que você precisa fazer com eles, que tal uma solução simples de ls + grep?

ls -al LOGDIRECTORY | grep 'YOUR DATE'
    
por 07.10.2009 / 17:11
0

O find . -mtime 1 não fará o truque?

Se você precisar que seja ontem e não possa executá-lo perto da meia-noite, eu suponho que você poderia trabalhar com o uso de duas opções de -min para especificar um intervalo de tempo.

Então, se é 01:00, você pode fazer find . -mmin +60 -mmin -1500

    
por 07.10.2009 / 17:00

Tags