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

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

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

/dev/sda
/dev/sdb

答え1

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

答え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

関連情報