Cmd 找不到文件

我正在尝试使用cmd最小化文件。


代码:


func minify(path string) {

    if exists(path) {

        fmt.Println("File exist")

    } else {

        fmt.Println("File NOT exist")

    }


    cmdStr := `sed ':a;N;$!ba;s/\\n//g' ` + path + " > " + path

    fmt.Println(cmdStr)

    cmd := exec.Command(cmdStr)

    if err := cmd.Run(); err != nil {

        log.Fatal(err)

    }

}


func exists(name string) bool {

    if _, err := os.Stat(name); err != nil {

        if os.IsNotExist(err) {

            return false

        }

    }

    return true

}


函数 exist() 验证文件是否存在:


2021/04/20 14:14:53 /media/peter/Elements/Code/free-quotes.info/ubuntu/aws/Go/views/500.min.html

File exist

但是当尝试运行命令时sed ':a;N;$!ba;s/\\n//g' /media/peter/Elements/Code/free-quotes.info/ubuntu/aws/Go/views/500.min.html > /media/peter/Elements/Code/free-quotes.info/ubuntu/aws/Go/views/500.min.html


我得到no such file or directory


根据我尝试过的以下反馈


func minify(oldPath string, newPath string) {

    cmd := exec.Command("sed", ":a;N;$!ba;s/\n//g", oldPath, ">", newPath)

    if err := cmd.Run(); err != nil {

        fmt.Println(whereami.WhereAmI(), err)

    }

}

但现在我得到:


File: main.go  Function: main.minify Line: 91 exit status 1


繁花不似锦
浏览 158回答 2
2回答

忽然笑

如果要删除所有换行符,可以直接使用 Go:package mainimport (   "bytes"   "os")func main() {   b, e := os.ReadFile("file.txt")   if e != nil {      panic(e)   }   b = bytes.ReplaceAll(b, []byte{'\n'}, nil)   println(string(b))}https://golang.org/pkg/bytes#ReplaceAll

函数式编程

您正在将包括路径和参数在内的所有部分传递到一个参数中。但是,当您查看命令函数时,它需要路径和参数,如以下文档中所述。https://golang.org/pkg/os/exec/#Command所以我相信你应该像下面这样编辑你的代码;执行。命令(“sed”, “:a;N;$!ba;s/\n//g“, fPath1, ”>“, fPath2)
打开App,查看更多内容
随时随地看视频慕课网APP