登录
首页 >  Golang >  Go问答

学习如何使用递归创建硬链接

来源:stackoverflow

时间:2024-02-08 23:24:16 145浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《学习如何使用递归创建硬链接》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

如果我单独在 linux 上执行此操作,则使用以下代码会很容易:

package main

import (
    "fmt"
    "log"
    "os/exec"
)

func main() {

    err := exec.Command("cp", "-rl", "src/path", "target/path").Run()
    if err != nil {
        log.Fatal(err)
    }
}

但是,我正在寻找一种在 golang 中执行此操作的方法,以便它可以跨不同的操作系统运行。


正确答案


这实际上取决于底层文件系统是否支持链接文件。 但下面是我认为适用于大多数操作系统的代码片段(在 macos 和 ubuntu 20.04 上测试)

package main

import (
    "fmt"
    "io/fs"
    "log"
    "os"
    "path/filepath"
)

func main() {
    err := filepath.WalkDir("src/path", func(path string, d fs.DirEntry, err error) error {
        if err != nil {
            log.Fatal(err)
        }
        if d.IsDir() {
            return nil
        }
        destinationFile := fmt.Sprintf("/target/%s", path)
        err = os.Link(path, destinationFile)
        if err != nil {
            log.Fatal(err)
        }
        return nil
    })
    if err != nil {
        log.Fatal(err)
    }
}

好了,本文到此结束,带大家了解了《学习如何使用递归创建硬链接》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>