我想递归地创建一个目录,并为创建的文件夹及其父级分配所有者和组。
例如,假设/var存在,我想创建/var/test1/test2/test3.
我可以使用os.MkdirAll("/var/test1/test2/test3", 0600).
但是,我还想设置test1、test2、 和test3的uidtouser1和gidto user1。
可以使用 来做到这一点os.Chown,但这需要大量的手动工作。我需要在创建文件夹链之前构建一个不存在的文件夹及其父级的树,然后os.Chown在创建后在每个文件夹上使用。
有没有更简单的方法?
有点像这种ChownR()类型的函数,其想法是过滤步行,并将 chown 仅应用于作为参数传递的路径一部分的文件夹(此处"/var/test1/test2/test3)
不带过滤器:
func ChownR(path string, uid, gid int) error {
return filepath.Walk(path, func(name string, info os.FileInfo, err error) error {
if err == nil {
err = os.Chown(name, uid, gid)
}
return err
})
}
Run Code Online (Sandbox Code Playgroud)
换句话说,有了filepath.Walk(),这里不应该涉及太多的“手工工作”。
| 归档时间: |
|
| 查看次数: |
6432 次 |
| 最近记录: |