我正在寻找一种方法来列出 Linux 上特定类型的所有分区。(具体来说:所有 EFI 系统分区)。
我知道blkid
可以过滤文件系统类型:该命令blkid -t TYPE=vfat
返回正确的结果,但不是很健壮:可能有其他不是 ESP 的 vfat 文件系统,或者可能有使用不同文件系统格式化的 ESP。
那么,是否有一个等效的命令可以列出设备但过滤分区类型?
编辑
我需要所有 EFI 系统分区(或 ESP)的列表。这些分区EF00
在 gdisk 中具有分区类型或ef
在 fdisk 中具有分区类型。它们最常被格式化为 vfat。现在,我可以使用blkid
列出所有使用 vfat 格式化的分区,但这会留下两个问题:
a)可能存在未使用 vfat 格式化(或根本未格式化)的 EFI 分区,这些分区将从列表中丢失,并且
b)可能存在格式为 vfat 的常规文件系统,这些文件系统会错误地包含在列表中。因此,匹配文件系统类型不是可行的方法。这就是为什么我正在寻找可以匹配分区类型的东西,所以EF00
或ef
。
如果这样的命令不存在,我可能需要执行以下操作来获取我想要的信息:
- 列出所有磁盘
- 对于每个磁盘,找出上面是否有 MBR 或 GPT 分区表
- 列出分区表
- 过滤结果以仅打印 ESP 分区
这既麻烦又容易出错,所以如果blkid
存在能够匹配分区类型的等价物,我想使用它。
lsblk -o +PARTTYPE
在列表中包含分区类型 UUID。EFI 系统分区类型 UUID 是C12A7328-F81F-11D2-BA4B-00A0C93EC93B
,因此对此进行 grepping(小写,或使用-i
带有 grep 的标志)列出了您的 ESP。1)对于特定类型的列表分区:
也可以看看:
lsblk -ln -o NAME,PARTTYPE
2)或更具体地说:
为了列出 EFI 分区,您可以使用:
或按文件系统归档
FSTYPE
:尝试解析 JSON 输出
lsblk -J
(你需要 version> 2.25
,2.33
似乎支持这个)。您可以使用
jq
Python/Ruby/Perl 脚本来处理它: