如何使用 bash 的括号扩展语法创建目录树



虽然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)
}

值得注意的是,如果文件夹/文件名中有空格,则此策略将不起作用。

相关内容

  • 没有找到相关文章

最新更新