在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开头的文件都已被删掉
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者