可以使用 os 包中的 FilePathWalkDir 函数遍历 /dev 目录下的所有块设备文件,然后根据文件名进行过滤,只保留磁盘和分区对应的设备文件。以下是一个示例代码:
package main
import (
"fmt"
"io/fs"
"os"
"strings"
)
func main() {
devDir := "/dev"
disks := make([]string, 0)
err := filepath.WalkDir(devDir, func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
// 只处理块设备文件
if d.Type().IsRegular() && strings.HasPrefix(d.Name(), "sd") {
disks = append(disks, path)
}
return nil
})
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println(disks)
}
注意:在 Linux 系统下,IDE 硬盘设备通常以 /dev/hd 开头,而 SATA 硬盘设备以 /dev/sd 开头。所以以上代码只列出了 sd 开头的设备文件,如果要包含 hd 设备文件,需要修改判断条件。




