Linux

獲取所有磁碟的簡單列表

  • July 15, 2020

如何獲取所有磁碟的列表,像這樣?

/dev/sda
/dev/sdb

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

您可以使用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.

引用自:https://unix.stackexchange.com/questions/360582