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