如何从命令行列出通过 USB 连接的所有存储设备(拇指驱动器/外部硬盘驱动器)?

如何从命令行列出通过 USB 连接的所有存储设备(拇指驱动器/外部硬盘驱动器)?

我只想列出通过 USB 连接的设备。

问题是 Ubuntu 似乎将所有拇指驱动器视为可移动驱动器(在/sys/block/*/removable),但它并不以相同的方式看待外部硬盘驱动器。

这比如何检测 USB 设备?

答案1

如果你正在寻找已安装的磁盘,一个简单的

df

将列出它们以及您的所有其他磁盘以及一些有用的信息。

答案2

我建议检查设备的 udev 属性,特别是以下ID_BUS属性:

for device in /sys/block/*
do
    if udevadm info --query=property --path=$device | grep -q ^ID_BUS=usb
    then
        echo $device
    fi
done

答案3

我认为

lsusb

会给你你想要的东西,至少如果我明白你在问什么的话。(当然,它列出了所有 USB 设备,而不仅仅是存储设备。)

答案4

仅附有清单USB存储设备

编辑:有时间的话,我会重新查看这篇文章,让它只列出 USB 设备。目前,它列出了所有安装的设备,/media这对某些人来说可能已经足够了。

列出所有安装在的设备/media

此处的所有其他答案似乎都无法过滤掉非 USB 存储设备或非存储 USB 设备。这里有一个命令,它应该只列出通过 USB 连接的存储设备。 有一个例外,可能对任何人来说都无关紧要,那就是这不会显示已安装介质的已连接的 USB 光驱。

此项工作的要求

  • 必须安装 USB 设备。Ubuntu 桌面操作系统通常默认自动安装
  • 媒体必须安装在/media目录中。如果您的 USB 设备在 fstab 中配置为安装在其他位置,则必须调整以下命令

列出 USB 存储设备
在我编写的脚本的特定情况下,我会列出各个分区。这里有两个命令。一个命令将列出所连接设备的分区,另一个命令将仅列出设备。

  • 列出分区:
    lsblk | grep /media | grep -oP "sd[a-z][0-9]?" | awk '{print "/dev/"$1}'
    示例输出:

    /dev/sdd1
    /dev/sdi1
    /dev/sdj1
    /dev/sdj2
    
  • 列出设备:
    lsblk | grep /media | grep -oP "sd[a-z]" | awk '{print "/dev/"$1}' | sort | uniq
    示例输出:

    /dev/sdd
    /dev/sdi
    /dev/sdj
    

相关内容