Adicione | fgrep -vf processedlogfiles
ao seu comando find
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
Que tal dividir as coisas por pasta ... Novos arquivos em um e arquivos processados no outro. Então o "processamento" inclui mover os arquivos.