Per me, che faccio un uso massiccio di link simbolici, ogni tanto è necessario rimuovere quelli corrispondenti a file o directory non più esistenti. Oltre all'uso di readlink c'è questa possibilità.
#! /bin/bash
checkdir="/home/you/workingdir"
find $checkdir -maxdepth 5 -iname '*' -type l | while read file; do
res=`file "$file" | grep ": broken"`
if [ -n "$res" ]
then
# what you want
break # if you want to break cycle
fi
done;