如何通过其基本名称检查文件是否存在(没有扩展名)?

时间:2014-11-23 18:56:24

标签: search go filesystems

问题是不言自明的。

拜托,有没有人可以告诉我如何通过简短有效的方式按名称(无扩展名)检查文件的存在。如果文件夹具有多个具有相同名称的文件,则代码返回多次会很好。

示例:

folder/
  file.html
  file.md

更新

如何通过官方文档使用filepath.Match()filepath.Glob()函数之一并不明显。所以这里有一些例子:

matches, _          := filepath.Glob("./folder/file*") //returns paths to real files [folder/file.html, folder/file.md]
matchesToPattern, _ := filepath.Match("./folder/file*", "./folder/file.html") //returns true, but it is just compare strings and doesn't check real content

2 个答案:

答案 0 :(得分:3)

您需要使用path/filepath package

要检查的功能有:Glob()Match()Walk() - 选择最适合您口味的内容。

答案 1 :(得分:1)

以下是更新后的代码:

package main

import (
    "fmt"
    "os"
    "path/filepath"
    "regexp"
)

func main() {
    dirname := "." + string(filepath.Separator)
    d, err := os.Open(dirname)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    defer d.Close()
    fi, err := d.Readdir(-1)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    r, _ := regexp.Compile("f([a-z]+)le") // the string to match
    for _, fi := range fi {
        if fi.Mode().IsRegular() { // is file
            if r.Match([]byte(fi.Name())) { // if it match
                fmt.Println(fi.Name(), fi.Size(), "bytes")
            }
        }
    }
}

使用此功能,您还可以搜索日期,大小,包含子文件夹或文件属性。