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

如果你想删除所有换行符,你可以直接使用Go:

package main
import (
"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(

最新更新