1
我试图写在旅途中find
命令(外壳下面的命令):golang EXEC find命令的正则表达式
find . -mindepth 3 -maxdepth 3 -regex '.*\(type-a\|type-b\)\/os.*'
这里是旅途片段:
package main
import (
"bytes"
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("/usr/bin/find", "/opt/system/versions",
"-mindepth", "3", "-maxdepth", "3",
"-regex", ".*(type-a|type-b)/os.*")
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
err:= cmd.Run()
if err != nil {
fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
return
}
fmt.Println("Directory contents : ", out.String())
}
,如果我寻找工作正常仅为type-a
(或者只是type-b
)。当我搜索type-a
或type-b
(shell命令可以正常工作)时不起作用。在输入Command
的正则表达式中,我得到了什么错误?
当我逃离(
,|
和)
使用\
,去抱怨转义序列 - unknown escape sequence: (
:
cmd := exec.Command("/usr/bin/find", "/opt/system/versions",
"-mindepth", "3", "-maxdepth", "3",
"-regex", ".*\(type-a\|type-b\)/os.*")
你应该逃避'(','|'和')'在转到脚本以及 –
我相信'''被解释为'find'命令的shell'pipe'。 – kaza
@bulbus它不被解释为shell管道,当使用'exec.Command'时,shell根本不处理参数。 – Adrian