Remove arquivos antigos em um diretório, exceto arquivos presentes em um arquivo de exceção

3

Estou escrevendo um script de shell para excluir arquivos antigos (com mais de 60 dias) em um diretório, exceto alguns arquivos, e esses nomes de arquivos são mantidos em um arquivo de exceção presente em outro diretório.

Eu sei que o seguinte comando funciona para um arquivo de exceção, mas preciso verificar uma lista de arquivos de exceção

find . ! -name 'file.txt' -type f -exec rm -f {} +
    
por Balaji 28.06.2016 / 18:32

2 respostas

2

Supondo que seus arquivos tenham nomes sensatos (ou seja, eles não têm novas linhas incorporadas), algo assim deve funcionar:

find . -mtime +60 | fgrep -v -x -f exceptions.txt | xargs -d '\n' rm -f

Substitua rm -f por ls -1 para uma execução a seco primeiro. Coloque os caminhos exatamente como eles são impressos por find in exceptions.txt .

    
por 28.06.2016 / 18:39
1

Eu não acho que find tenha uma opção como essa, você poderia criar um comando usando printf e sua lista de exclusão:

find . -name "*.txt" $(printf "! -name %s " $(cat file.txt)) -mtime +60 -exec rm -f {} +

file.txt terá uma lista de arquivos a serem excluídos no comando find .

    
por 28.06.2016 / 18:41