USBストレージデバイスのみをリストするLinuxコマンドは何ですか?

USBストレージデバイスのみをリストするLinuxコマンドは何ですか?

私のコンピュータに接続されているUSBストレージデバイスだけをリストしたいと思います。これはSCSIディスクなので、lsscsiUSBドライブとコンピュータのハードドライブとCDドライブを一覧表示するコマンドを使用しました。 USB以外のメモリストレージデバイスを無視する方法はありますか?私もそれを試しましたが、lsusbこれにはキーボード、マウス、その他の非保存デバイスが含まれます。

答え1

この回答接続されているすべてのブロックデバイスのリストを確認して繰り返し、udevadminそれぞれのID_BUS

で接続されているすべてのブロックデバイスを表示できます/sys/block。 USBストレージデバイスであることを示すリンクされた回答のbashスクリプトは次のとおりです。

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デバイスを提供する必要があります。

関連情報