Processar arquivos em uma pasta que não tenha sido processada anteriormente

6

Eu tenho uma série de arquivos em um diretório em que preciso executar uma ação usando um script. Quando a ação estiver concluída, quero manter um log no qual o arquivo foi processado, para que, na próxima vez em que o script for executado, ele não tente executar a ação novamente.

Então, digamos que eu possa encontrar todos os arquivos que devem ser processados assim:

for i in 'find /logfolder -name '20*.log'' ; do
    process_log $i
    echo $i >> processedlogsfile
done

Portanto, eu tenho um arquivo contendo os logs que processei e meu objetivo seria modificar o loop for, de forma que esses logs processados não sejam processados uma segunda vez.

Fazer uma varredura manual toda vez parece ineficiente, particularmente à medida que os arquivos de registro processados aumentam:

 if grep -iq "$i" processdlogfiles ; then continue; fi

Seria bom se esses arquivos pudessem ser excluídos ao configurar o loop for.

Observe que o SO em questão é um derivativo do Linux, um appliance, com um conjunto de ferramentas limitado (sem attr , por exemplo) e, portanto, nenhuma maneira de instalar utilitários adicionais (bem, é possível, mas não uma opção). Os comandos mais comuns do bash shell estão disponíveis.

Além disso, os nomes de arquivos e os locais dos arquivos processados devem permanecer onde estão - eles não podem ser alterados para refletir seu status processado

    
por Paul 11.07.2012 / 03:01

2 respostas

1

Adicione | fgrep -vf processedlogfiles ao seu comando find

    
por 11.07.2012 / 03:30
0

Que tal dividir as coisas por pasta ... Novos arquivos em um e arquivos processados no outro. Então o "processamento" inclui mover os arquivos.

    
por 11.07.2012 / 03:28