我只想列出连接到我的计算机的 USB 存储设备。由于这些是 SCSI 磁盘,我使用了命令lsscsi
,该命令列出了 USB 驱动器以及我的计算机的硬盘驱动器和 CD 驱动器。有没有办法忽略非 USB 的内存存储?我也尝试过lsusb
,但这包括我的键盘、鼠标和其他非存储设备。
答案1
这个答案检查所有附加块设备的列表并迭代它们以udevadmin
检查它们各自的ID_BUS
.
您可以在 中查看所有附加的块设备/sys/block
。以下是链接答案中的 bash 脚本,可以让您知道它是否是 USB 存储设备:
for device in /sys/block/*
do
if udevadm info --query=property --path=$device | grep -q ^ID_BUS=usb
then
echo $device
fi
done
答案2
我刚刚写了一个函数:
dmu() {
# Criação : 2019-07-24 RBR.
local disks=`lsblk -o name,tran | awk '$2=="usb"{print $1}' | tr "\n" " " | sed -E "s/^ +//g;s/ +$//g"`
local mask=`sed -E "s/ /\([\\\\t ]|[0-9]\)+|/g;s/$/\([\\\\t ]|[0-9]\)+/g" <<< ${disks}`
lsblk -f | sed -n "1p"
lsblk -f | grep -E "$mask"
}
答案3
lsblk --noheadings --nodeps --paths --raw --output NAME,RM,TRAN,TYPE | grep " 1 usb disk$" | cut --delimiter " " --fields 1
输出示例:
/dev/sdd
/dev/sde
/dev/sdf
基本上,grep
您可以过滤可移动 USB 磁盘。lsblk
各种设备的未过滤输出的一些示例:
/dev/loop0 0 loop
/dev/sda 0 sata disk
SATA固态硬盘/dev/sdb 0 sata disk
SATA硬盘/dev/sdd 1 usb disk
USB闪存盘/dev/sr0 1 sata rom
SATA DVD-RW
答案4
您可以使用 lsblk。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465,8G 0 disk
├─sda1 8:1 0 285M 0 part /boot
├─sda2 8:2 0 1,9G 0 part [SWAP]
├─sda3 8:3 0 74,5G 0 part /
└─sda4 8:4 0 389,1G 0 part /home
sr0 11:0 1 1024M 0 rom
通常 USB 设备位于 sdb 上,因此 lsblk sdb 应该提供所有 USB 设备。