почему в конце имен symlink вопросительный знак и почему они не работают?
Потому что такие имена файлов вы прочитали из $file оператором read:
while read line ; do ... done < $file
Потому и не работают, что какой-то мусор в конце. Покажите что выводит
hexdump -Cv $file