Acho que você esperava que, na primeira linha, por exemplo, o comando date=${f#*} removeria DBSOURCE da variável f porque você fez referência a *[0-9]...[0-9].gz . Não é possível usar * in date=${f#*} para que a primeira parte seja removida da variável, pois * não é passado separadamente no loop for como DBSOURCE neste exemplo.
Se a estrutura do nome do arquivo é sempre a mesma, você pode simplesmente usar
date=${f//[^0-9]/}
para remover todos os caracteres não dígitos (na verdade, substitua todos os caracteres não dígitos por "nada")
Outra maneira é usar tr para extrair a data:
date='echo $f|tr -d '[:alpha:] [:punct:]''