Para excluir correspondências com base na cadeia de data e hora do nome do diretório, você pode adicionar
! \( -name '????-15-??*' -o -name '????-30-??*' \)
ou
-not \( -name '????-15-??*' -o -name '????-30-??*' \)
para o comando find
.
Se você realmente quer basear isso no timestamp, então a única maneira que posso pensar em fazer isso é algo como ( note estou usando mtime
aqui desde que seus comandos touch
não parece modificar o ctime
no meu sistema: altere %Td
para %Cd
para ctime
):
find dir -type d -mtime +30 -printf '%Td\t%p! \( -name '????-15-??*' -o -name '????-30-??*' \)
' |
while read -rd '' day dir; do
case "$day" in
15|30) ;;
*) echo rm -rf -- "$dir";;
esac
done