Go有这个包和功能
package main
import "os"
func main() {
os.Rename("LICENSE", "e")
}
Run Code Online (Sandbox Code Playgroud)
这会将文件名LICENSE更改为e.
但我想做的是以下,无法找到如何做到这一点.Ruby应该这样做,所以应该去.我应该在哪里查找?
更改目录的名称而不是文件....
重命名名称的一部分.例如,如果我有一个文件或目录"示例",我想将"Exa"更改为"Stq",然后单词将为"Stqmple"
我应该使用什么包装?
提前致谢.
dsk*_*ner 11
os.Rename将在目录,包括Windows上正常工作.这里唯一要质疑的是操作是否是原子操作,在所有主要平台上,答案是肯定的.
如果要查找与模式匹配的文件和目录,则需要查看filepath包.这将允许您遍历目录,此时您可以检查每个文件并根据您的要求匹配名称.看看func Walk和type WalkFn文档的.http://golang.org/pkg/path/filepath/#Walk
这是一个Walk用于在给定目录或其任何子目录中定位png文件的示例:
package main
import (
"flag"
"fmt"
"os"
"path/filepath"
)
var flagPath = flag.String("path", "", "recursively traverse path and print png filepaths to stdout.")
func visit(path string, f os.FileInfo, err error) error {
if filepath.Ext(path) == ".png" {
fmt.Println(path)
}
return nil
}
func main() {
flag.Parse()
if *flagPath == "" {
flag.Usage()
return
}
filepath.Walk(*flagPath, visit)
}
Run Code Online (Sandbox Code Playgroud)
这func visit是你在评论中做的事情,请务必导入"字符串":
func visit(path string, f os.FileInfo, err error) error {
if name := f.Name(); strings.HasPrefix(name, "name_") {
dir := filepath.Dir(path)
newname := strings.Replace(name, "name_", "name1_", 1)
newpath := filepath.Join(dir, newname)
fmt.Printf("mv %q %q\n", path, newpath)
os.Rename(path, newpath)
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7205 次 |
| 最近记录: |