仅列出 USB 存储设备的 Linux 命令是什么?

仅列出 USB 存储设备的 Linux 命令是什么?

我只想列出连接到我的计算机的 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 diskSATA固态硬盘
  • /dev/sdb 0 sata diskSATA硬盘
  • /dev/sdd 1 usb disk USB闪存盘
  • /dev/sr0 1 sata romSATA 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 设备。

相关内容