Apenas certifique-se de citar seus nomes de arquivo corretamente e não haverá problemas.
for name in ./*; do
newname=${name//[?\"*:]/ }
if [ "$newname" != "$name" ]; then
mv -iv "$name" "$newname"
fi
done
Seu "'"$file"'" , na verdade, deixa $file completamente sem aspas (cercado por aspas simples, mas elas não citam a variável ou seu valor, pois elas mesmas são citadas).
Veja também:
Em relação ao seu sed bit.
sed tem um pequeno comando que muitos parecem ignorar chamado y :
sed 'y/?"*:/ /'
Isso mudaria todos os caracteres na primeira parte da expressão para o caractere correspondente na segunda parte (aqui todos os espaços).
tr também funciona:
tr '?"*:' ' '
Mas, neste caso, seria mais conveniente usar o recurso interno de substituição de parâmetros de bash para fazer as alterações necessárias.