Não há necessidade de qualquer coisa extravagante. Simplesmente escape do ?
para que não seja considerado parte do glob:
rm -f ./\?*
Isso funciona para !
também:
rm -f ./\!*
Ou de uma só vez:
rm -f ./{\?,\!}*
Atualizar
Só percebi que você estava sugerindo para grep
a saída de ls
. Eu queria chamar sua atenção para o fato de que você não deveria analisar a saída de ls