ls(ただし、個別パーティションは表示する)

ls(ただし、個別パーティションは表示する)

このようなすべてのディスクのリストをどのように取得できますか?

/dev/sda
/dev/sdb

答え1

ls(ただし、個別パーティションは表示する)

# ls /dev/sd*
/dev/sda  /dev/sda1

ls(ディスクのみ、パーティションを無視)

# ls /dev/sd*[a-z]
/dev/sda

ディスクドライブ

# fdisk -l 2>/dev/null |awk '/^Disk \//{print substr($2,0,length($2)-1)}'
/dev/xvda

答え2

df以下を使用して、マウントされているすべてのパーティションを一覧表示できます。

$ df
/dev/sda1      230467740  37314652 181422912  18% /
udev               10240         0     10240   0% /dev
tmpfs            5599420         0   5599420   0% /sys/fs/cgroup
/dev/sdb1      961303548 130106540 782342500  15% /media/Data
..

マウントされたディスクのみを一覧表示するには、grepを使用して出力をフィルタリングできます。

$ df | grep '^/dev'
/dev/sda1      230467740  37314752 181422812  18% /
/dev/sdb1      961303548 130106540 782342500  15% /media/Data

次に始まる行と一致する/devか、名前のみを希望する場合

df | grep -o '^/dev[^ ]*' 
/dev/sda1
/dev/sdb1

/dev最初の空白文字から始まる文字列と一致し、一致する項目(オプション-o, --only-matching)のみを出力します。

編集する

上記はすべてのパーティションをリストしています。ディスクを一覧表示する必要がある場合は、lsblk次のオプションを使用します(上記と一致するパターン)。

$ lsblk -dp | grep -o '^/dev[^ ]*'
/dev/sda
/dev/sdb
  • -dパーティション以外のデバイスのみを一覧表示
  • -pフルパスを出力

編集2

指摘したとおり次のようなlsblk -dpno name同じ結果が得られるので必要ありませんgrep

関連情報