#!/bin/sh # GET THE INITITAL OUTPUT OF `ls /sys/block` OUTPUT="$(ls -l --color=never /sys/block | grep -v virtual | grep devices | cut -d\ -f9-)" # STRIP OFF THE PCI BUS LOCATION INFORMATION OUTPUT="$(echo "${OUTPUT}" | sed 's|\.\.\/devices/pci[0-9a-f:]\{7\}\(/[0-9a-f:.]\{12\}\)\+/||g')" #STRIP OFF THE SUPERFLUOUS USB HOST INFORMATION OUTPUT="$(echo "${OUTPUT}" | sed 's|\(usb[0-9]\+\)/.*/host|\1/host|g')" # CONDENSE THE TARGET INFORMATION OUTPUT="$(echo "${OUTPUT}" | sed 's|target[0-9:]\+/[0-9:]\+:\([0-9]\+\)|target\1|g')" # STRIP OFF BLOCKS OUTPUT="$(echo "${OUTPUT}" | sed 's|/block/.*||g')" # CONVERT -> TO A TAB OUTPUT="${OUTPUT// -> / }" # SWAP COLUMNS OUTPUT="$(echo "${OUTPUT}" | awk '{t=$1; $1=$2; $2=t; print;}')" # NOW GET DEVICE IDs while read -r LOCATION BLOCKDEV; do DEVICE_ID="$(ls -l --color=never /dev/disk/by-id | sed 's/ \+/ /g' | grep -v 'nvme-eui\|wwn-' | grep "${BLOCKDEV}$" | cut -d\ -f9)" echo "${LOCATION} ${BLOCKDEV} ${DEVICE_ID}" done <<< "${OUTPUT}"