Você pode tentar ver como a data funciona da seguinte maneira:
date -d "$(date -d "Mar 31 2019" +%F) +1 month ago"
Sun Mar 3 00:00:00 EET 2019
Então, acho que, com base no atual mês passado (não atual, se é março), diminui o número de dias desde o último mês a partir do mês atual.
Você pode tentar a seguinte sintaxe para excluir arquivos com mais de um número de dias (no exemplo abaixo de 31 dias). Uma linha para resolver o problema (isto é para uma abordagem simples).
find /path/to/folder/with/arhives/ -mindepth 1 -mtime +31 -delete
Para uma abordagem mais detalhada, você também pode fazer algo assim: 1. Encontrar o número de dias para o mês atual:
cal $(date +%m) $(date +%y) | egrep -v "$(date +%y)|Su" | xargs | awk '{print $NF}'
Localizando o número de dias do último mês:
echo "$ (cal $ (data +% m) $ (data +% y) | egrep -v" $ (data +% y) | Su "| xargs | awk '{print $ NF}') -" $ ( cal $ (data -d "há um mês atrás" +% m) $ (data +% y) | egrep -v "$ (data +% y) | Su" | xargs | awk '{print $ NF}') | bc
Então agora encontramos a diferença entre esses dois meses:
echo "$ (cal $ (data +% m) $ (data +% y) | egrep -v" $ (data +% y) | Su "| xargs | awk '{print $ NF}') -" $ ( cal $ (data -d "há um mês atrás" +% m) $ (data +% y) | egrep -v "$ (data +% y) | Su" | xargs | awk '{print $ NF}') | bc
Agora vamos atribuir algumas variáveis a essas 3 etapas. Etapa 1 Nome da variável: FCM Etapa 2 Nome da variável: FLM Etapa 3 Variável NAme: DCL
FCM=$(cal $(date +%m) $(date +%y) | egrep -v "$(date +%y)|Su" | xargs | awk '{print $NF}')
FLM=$(al $(date -d "+1 month ago" +%m) $(date +%y) | egrep -v "$(date +%y)|Su" | xargs | awk '{print $NF}')
DCL=$(echo "$FCM-$FLM" | bc)
Verifique se $ DCL é igual a 0 (zero) e exclua com base na diferença entre $ FCM e $ FLM:
if [ $DCL -ne 0 ]; then
if [ $DCL -lt 0 ]; then
find /path/to/folder/with/arhives/ -mindepth 1 -mtime +$(echo "$DCL+$FLM" | bc) -delete
elif [ $DCL -gt 0 ]; then
find /path/to/folder/with/arhives/ -mindepth 1 -mtime +$(echo "$DCL+$FLM" | bc) -delete
fi
else
find /path/to/folder/with/arhives/ -mindepth 1 -mtime +$FLM -delete
fi
Você também pode adicionar uma variável a "/ path / to / folde / with / arhives /".
Conclusão: Se você deseja excluir arquivos com mais de um mês (exatamente), precisará ajustar o número exato de dias, se estiver usando o comando "date" e "+1 month ago".