Use ctime apenas para dias da semana

3

Eu tenho um script para excluir todas as pastas criadas antes dos últimos dois dias. Agora, na segunda-feira, ele exclui apenas todas as pastas da semana anterior, o que eu não quero.

Existe uma opção para considerar apenas os dias da semana para este comando? Todo o script é executado todos os dias. Eu estou usando isso:

find /my-folder/sub-folder/ -type d -ctime +1 | xargs rm -rf
    
por Riju Mahna 18.01.2018 / 16:58

1 resposta

7

Você poderia fazer:

find /my-folder/sub-folder/ -type d -ctime "+$((
  1 + 2 * ($(date +%u) <= 2) ))" -prune -exec echo rm -rf {} +

Ou seja, adicione dois dias se o dia atual for 1 (segunda-feira) ou 2 (terça-feira) (supondo que você esteja executando apenas esse script em dias da semana).

Eu adicionei um -prune , pois não faz sentido descer em diretórios que você está removendo e substituiu xargs , o que falharia em nomes de arquivos que contivessem espaços em branco ou barras invertidas ou citações com o padrão -exec ... {} + alternativa.

Observe que ctime de um diretório não é atualizado quando um arquivo dentro dele é modificado ou quando arquivos são adicionados ou removidos de / para subdiretórios.

    
por 18.01.2018 / 17:08