web-dev-qa-db-ja.com

すべてのディスクの簡単なリストを取得する

このように、すべてのディスクのリストを取得するにはどうすればよいですか?

/dev/sda
/dev/sdb
10
clarkk

ls(ただし、個々のパーティションを表示します)

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

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

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

fdisk

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

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 namegrepを必要とせず、同じ結果になります。

12
resc