What's wrong with using uuids? If it's really bugging you you could use something like #!/bin/bash while true; do for dev in /media/*; do sdname=$(blkid -U ${dev##*/} [[ ! -e /media/$sdname ]] && ln -s "$dev" "/media/$sdname" done done Something that used inotify would work better though.