关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

Go使用通配符删除文件

发布时间:2023-06-27 14:00:18

在shell中常使用命令通配符*操作文件,如可使用 rm 20160101.* 来批量删除前缀为20160101的全部文件:

但在Go中,使用如下代码居然无效:

package main  import "os"  func main() {   os.RemoveAll("/Users/fliter/lab/log/20160101.*") }

   

rm xxx通配符是 shell的一个功能,而非操作系统,其他编程语言一般不会提供类似的支持(即能否可以按通配符来删除文件)

在Go中可以使用 Glob功能模糊匹配到想要删除的文件,然后再进行删除,如下:

package main  import (  "fmt"  "os"  "path/filepath" )  func main() {   files, err := filepath.Glob("/Users/fliter/lab/log/20160101.*")  if err != nil {  panic(err)  }   fmt.Println("匹配到的文件为:", files)   for _, f := range files {  if err := os.RemoveAll(f); err != nil {  panic(err)  }  }  }

   

打印出:

匹配到的文件为: [/Users/fliter/lab/log/20160101.debug /Users/fliter/lab/log/20160101.error /Users/fliter/lab/log/20160101.info /Users/fliter/lab/log/20160101.warning]

同时20160101开头的文件都已被删掉



/template/Home/leiyu/PC/Static