虽然os.MkdirAll
的行为类似于mkdir -p
,但如果需要,您将如何获取输入字符串(例如data/{P1/{10..19},P2/{20..29},P3/{30..39}}
(并创建目录树?
这个字符串data/{P1/{10..19},P2/{20..29},P3/{30..39}}
是bash大括号扩展。
有一些库已经实现了这一点:
- https://github.com/thomasheller/braceexpansion
- https://github.com/kujtimiihoxha/go-brace-expansion
您也可以使用文件路径。类似于bash通配符语法的Glob:https://golang.org/pkg/path/filepath/#Glob
或者,你可以花钱抨击:
cmd := exec.Command("bash", "-c", "echo data/{P1/{10..19},P2/{20..29},P3/{30..39}}")
respBytes, err := cmd.CombinedOutput()
if err != nil {
panic(err)
}
for _, path := range strings.Fields(string(respBytes)) {
os.MkdirAll(path, 0700)
}
值得注意的是,如果文件夹/文件名中有空格,则此策略将不起作用。