Linux的 – 如何列出特定types的分区?

我正在寻找一种方法来列出在Linux上的特定types的所有分区。 (具体来说:所有的EFI系统分区)。

我知道blkid可以过滤文件系统types:命令blkid -t TYPE=vfat返回正确的结果,但不是非常健壮的:可能有其他非ESP的vfat文件系统,或者可能有用不同的文件系统格式化的ESP 。

那么,是否有一个等同的命令,可以列出设备,但过滤分区types?

编辑

我需要列出所有EFI系统分区(或ESP)。 这些分区在gdisk中具有分区typesEF00 ,或在fdisk中具有分区typesef 。 它们通常被格式化为vfat。 现在,我可以使用blkid列出所有使用vfat格式化的分区,但是这会产生两个问题:
a)EFI分区可能没有用vfat格式化(或者根本没有格式化)
b)可能会有正规的档案格式化为vfat,这将不正确地包含在列表中。 所以匹配文件系统types是不是要走的路。 这就是为什么我正在寻找可以在分区types上匹配的东西,所以EF00ef

如果这样的命令不存在,我可能需要执行以下操作来获取我想要的信息:
– 列出所有磁盘
– 对于每个磁盘,找出其上是否有MBR或GPT分区表
– 列出分区表
– 过滤结果只打印ESP分区

这很麻烦,容易出错,所以如果存在能够匹配分区types的等价blkid ,我想使用它。

lsblk -o +PARTTYPE包含列表中的分区typesUUID。 EFI系统分区typesUUID是C12A7328-F81F-11D2-BA4B-00A0C93EC93B ,因此C12A7328-F81F-11D2-BA4B-00A0C93EC93B (小写,或者对grep使用-i标志)列出您的ESP。

1)对于特定types的列表分区:

 :~# lsblk -ln -o NAME,TYPE ... sda disk sda1 part sda1_crypt crypt vg0xa-system lvm vg0xa-swap lvm vg0xa-tmp lvm vg0xa-var lvm vg0xa-usr lvm ... 

另见: lsblk -ln -o NAME,PARTTYPE

2)或更具体地说:

 :~# lsblk -ln -o NAME,TYPE | grep sda1_crypt sda1_crypt crypt