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