[0-9] corresponde a qualquer dígito, então *[0-9]* corresponde a qualquer string que tenha pelo menos um dígito.
[^0-9] corresponde ao caractere que não é um dígito, portanto *[^0-9]* corresponde a qualquer string que tenha pelo menos um não dígito.
file1.txt tem dígitos e não dígitos, portanto, corresponde aos dois padrões.
Com padrões regulares de nome de arquivo, não há como usar um único padrão para corresponder a uma string que não contenha um caractere ou caracteres específicos.
Por outro lado, com expressões regulares, ^[^0-9]+$ corresponderia às cadeias que são feitas inteiramente de não dígitos, assim como o glob% estendido+([^0-9]) no Bash ou no ksh. (precisa de shopt -s extglob no Bash.)