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

相关内容