Se você quer dizer "O link realmente aponta para um arquivo?", (o que eu acho que você faz porque então:
if [[ -e "$file" ]]; then echo it is there; fi
Se quiser apenas testar se o arquivo é um link simbólico, então:
if [[ -h "$file" ]]; then echo it is a link; fi
Isto é feito sob medida para o Bash, e não da maneira mais portátil. E como um pouco de trivialidade, você não precisa das aspas ao usar a sintaxe de colchetes duplos.
Se você deseja pesquisar links quebrados, use find -L . -type l
.
Se você quer que o ls funcione novamente com suas cores diferentes para links quebrados, vá em eval $(dircolors)