如何仅对 USB 密钥进行排序?

如何仅对 USB 密钥进行排序?

我在 Ubuntu 20.04

如果我只想对 USB 密钥进行排序以获得如下输出,该怎么办?

usb 密钥名称 / 大小 (Gb) / usb 密钥路径

我试过这个,但我有硬盘和 USB 密钥。

df -ah | awk '/media/{print $1, $2, $6}'

或者这个哪个更好

ls -l /dev/disk/by-id | grep [a-z]$ | awk '/usb/{print $9, $11}'

并给出

usb-Intuix_U3_0DF069605361E946-0:0 ../../sdg
usb-Kingston_DataTraveler_2.0_60A44C3FAD9EFE41E98E256A-0:0 ../../sdf
usb-_USB_DISK_3.0_070B84A2C7C19B89-0:0 ../../sdh
usb-Verbatim_STORE_N_GO_1230000000003CFD-0:0 ../../sdi

答案1

关于lsblk

我建议使用lsblk。您可以通过这两个命令找到此工具的不同方面,

lsblk -h
man lsblk

使用命令与dfawk一起使用lsblk

hotplug用于选择 USB 驱动器。

$ lsblk -Po name,size,label,mountpoint,hotplug $(df -ah | awk '/media/{print $1}')|grep 'HOTPLUG="1"'|sed 's/ HOTPLUG="1"//'
NAME="sdc1" SIZE="29,5G" LABEL="usbdata" MOUNTPOINT="/media/olle/usbdata"
NAME="sdd1" SIZE="10G" LABEL="isodevice" MOUNTPOINT="/media/olle/isodevice"

使用lsblk两次,首先识别 USB 驱动器,然后列出分区

tran用于选择 USB 驱动器。

$ for i in $(lsblk -dPo name,tran|grep 'TRAN="usb"'|cut -d \" -f2);do echo '-----';lsblk -lo name,size,label,mountpoint,vendor,model /dev/$i;done
-----
NAME  SIZE LABEL   MOUNTPOINT          VENDOR   MODEL
sdc  29,5G                             Corsair  Voyager GT 3.0  
sdc1 29,5G usbdata /media/olle/usbdata          
-----
NAME   SIZE LABEL     MOUNTPOINT            VENDOR   MODEL
sdd   29,1G                                 Kingston DT Workspace    
sdd1    10G isodevice /media/olle/isodevice          
sdd2   977K                                          
sdd3 244,1M usbboot                                  

答案2

这应该提供这两个 USB 输出示例之间的映射:

# for usbdrv in $(df -ah | awk '$6 ~ /^\/media\// {print $1";"$2";"$6}'); do echo "${usbdrv}"; Dev=$(echo "${usbdrv}" | awk -F";" '{print $1}' | sed 's#/dev/##');  usbID=$(basename $(ls -al /dev/disk/by-id/usb* 2>&1 | grep ${Dev} | awk '{print $9}') 2>/dev/null); echo "${usbID};${usbdrv}"|sed 's/;/ /g'; done | column -t

相关内容