#!/bin/bash # input eg: /dev/sda1 or /dev/sda # output: /dev/disk/by-id/model+serial, or if no link exists, the same as input short_dev=$1 # i.e. # devices are identified by model+serial num, # and wwn. model+serial gives me more info, so use that. shopt -s extglob for id in /dev/disk/by-id/!(wwn*); do [[ -e $id ]] || break # if we matched nothing if [[ $(readlink -f $id) == "$short_dev" ]]; then printf '%s\n' "$id" exit fi done # a vm may not have a by-id link. printf '%s\n' "$short_dev"