我不知道有哪个程序可以执行此操作,但如果您想要的只是分区列表,则排序很容易。例如,在我的系统上:
$ sudo fdisk -l
Disk /dev/nvme0n1: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: SAMSUNG MZVLB1T0HBLR-000L7
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 97ED36D9-B503-42C1-ACE5-3E2E49212F20
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 534527 532480 260M EFI System
/dev/nvme0n1p2 534528 567295 32768 16M Microsoft reserved
/dev/nvme0n1p3 567296 390625000 390057705 186G Microsoft basic data
/dev/nvme0n1p4 1998360576 2000408575 2048000 1000M Windows recovery environment
/dev/nvme0n1p5 390625280 509251583 118626304 56.6G Linux filesystem
/dev/nvme0n1p6 509253632 1935546367 1426292736 680.1G Linux filesystem
/dev/nvme0n1p7 1935546368 1998360575 62814208 30G Linux swap
Partition table entries are not in disk order.
Disk /dev/mapper/home: 680.1 GiB, 730253492224 bytes, 1426276352 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Run Code Online (Sandbox Code Playgroud)
我可以用以下方法进行排序:
$ sudo fdisk -l | grep -E '^(Devi|/dev)' | sort -nk2,2
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 534527 532480 260M EFI System
/dev/nvme0n1p2 534528 567295 32768 16M Microsoft reserved
/dev/nvme0n1p3 567296 390625000 390057705 186G Microsoft basic data
/dev/nvme0n1p5 390625280 509251583 118626304 56.6G Linux filesystem
/dev/nvme0n1p6 509253632 1935546367 1426292736 680.1G Linux filesystem
/dev/nvme0n1p7 1935546368 1998360575 62814208 30G Linux swap
/dev/nvme0n1p4 1998360576 2000408575 2048000 1000M Windows recovery environment
Run Code Online (Sandbox Code Playgroud)
使用的命令是
grep -E '^(Devi|/dev)'
:使用扩展正则表达式 ( -E
),它让我们可以使用|
“或”。然后,正则表达式将匹配任何^
以 ( ) 或Devi
或开头的行/dev
。sort -nk2,2
:这将对-n
第二个字段进行数字排序 ( ),并且仅对第二个字段 ( -k2,2
) 进行排序,而忽略该行的其余部分。一种按分区在磁盘上的顺序列出分区的工具是 parted
这样的,例如,s
如果您运行(作为 root),则使用 ector 作为单位大小
parted /dev/sda unit s print \n
Run Code Online (Sandbox Code Playgroud)\n你得到
\nModel: IS817 DISK (scsi)\nDisk /dev/sda: 15728640s\nSector size (logical/physical): 512B/512B\nPartition Table: msdos\nDisk Flags: \n\nNumber Start End Size Type File system Flags\n 1 2048s 1435647s 1433600s primary ext2 boot\n 4 1435648s 1640447s 204800s primary ext3\n 2 1640448s 1644543s 4096s primary ntfs\n 3 1644544s 1710079s 65536s primary fat32 lba\n
Run Code Online (Sandbox Code Playgroud)\n另一个工具是lsblk
(不需要是 root)及其--sort
(或-x
) 选项。
\nlsblk
仅提供分区的起始扇区,因此如果您不需要结束扇区和扇区大小,您可以获得 la 的fdisk
输出
lsblk -o name,start,size,parttype,parttypename /dev/sda\n
Run Code Online (Sandbox Code Playgroud)\n名称 起始大小 部件类型 部件类型名称\nsda 7,5G \n\xe2\x94\x9c\xe2\x94\x80sda1 2048 700M 0x83 Linux\n\xe2\x94\x9c\xe2\x94\x80sda2 1640448 2M 0x7 HPFS/NTFS/exFAT \n\xe2\x94\x9c\xe2\x94\x80sda3 1644544 32M 0xc W95 FAT32 (LBA)\n\xe2\x94\x94\xe2\x94\x80sda4 1435648 100M 0x83 Linux\n
要按起始扇区排序,只需添加-x start
:
lsblk -o name,start,size,parttype,parttypename -x start /dev/sda\n
Run Code Online (Sandbox Code Playgroud)\n名称 起始大小 部件类型 部件类型NAME\nsda 7,5G \nsda1 2048 700M 0x83 Linux\nsda4 1435648 100M 0x83 Linux\nsda2 1640448 2M 0x7 HPFS/NTFS/exFAT\nsda3 1644544 32M 0xc W95 FAT32 (LBA)\n
运行lsblk --help
以获取所有可能字段/列的详细列表。