Removendo pastas com mais de 5 dias

2

Eu tenho uma pasta de backup do que usa um calendário como a estrutura de pastas para organizar arquivos. Desejo excluí-los a cada cinco dias, mas acabo excluindo o backup completo porque a pasta principal tem mais de cinco dias.

Estrutura de pastas:

Backup
    -> 2017
          -> October
                 -> 28
                 -> 29
                 -> 30
                 -> 31
          -> November
                 -> 1
                 -> 2
                 -> 3

Eu tentei executar este comando:

find /mnt/backup/* -type d -mtime +5 -execdir rm -rf {} \;

Mas removerá o diretório 2017 porque é mais antigo que 5 dias, o que significa que removerá todas as subpastas. Eu só quero excluir diretórios aqui dentro que são 5 dias de idade. Por exemplo, se hoje fosse 3 de novembro, eu só quero ter os diretórios 28 e 29 para excluir. Então, quando se tornar 5 de novembro, quero que o diretório completo de outubro seja excluído, já que tudo terá mais de 5 dias. Alguma sugestão?

Obrigado

    
por Stuart 10.10.2017 / 10:38

1 resposta

3

Use -mindepth 1 se você não quiser que 2017 seja tocado:

$ mkdir -p foo/2017/{October/{28..31},November/{1..3}}
$ touch -d 'now - 6 days' foo/2017/October/{28,29} foo/2017
$ find foo/* -mindepth 1 -mtime +5
foo/2017/October/28
foo/2017/October/29
$ find foo/* -mtime +5
foo/2017
foo/2017/October/28
foo/2017/October/29

Se você começar a partir de foo em vez de foo/2017 , use -mindepth 2 :

$ find foo/ -mindepth 2 -mtime +5
foo/2017/October/28
foo/2017/October/29
    
por muru 10.10.2017 / 10:47