我在 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
使用命令与df
和awk
一起使用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