首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用exec.Command运行'find‘

使用exec.Command运行'find‘
EN

Stack Overflow用户
提问于 2015-06-30 03:37:43
回答 1查看 334关注 0票数 1

我正在尝试使用exec.Command运行find命令

代码语言:javascript
复制
cmd := exec.Command("find", "/usr/bin", "-maxdepth", 
        "2", "-iname", "'*go*'", "|", "head", "-10")
out, err := cmd.CombinedOutput()
fmt.Println(err)
fmt.Println(string(out))

不幸的是,这将失败,并显示以下输出:

代码语言:javascript
复制
exit status 1
find: paths must precede expression: |
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

这里我漏掉了什么?

编辑:

即使我在不使用管道的情况下尝试,它仍然失败:

代码语言:javascript
复制
cmd := exec.Command("find", "/usr/bin", "-maxdepth", "2", "-iname", "'*go*'")
out, err := cmd.CombinedOutput()
fmt.Println(err)
fmt.Println(string(out))

输出:

代码语言:javascript
复制
<nil>
EN

回答 1

Stack Overflow用户

发布于 2015-06-30 03:48:33

您使用的是|,它通过管道将前一个命令的输出传递给下一个命令。相反,在Go中可能需要两个命令。使用string(out)作为第二个命令的输入,而不是尝试通过管道将两个bash命令组合成一个Go命令。

代码语言:javascript
复制
// this is pseudo code
cmd2 := exec.Command("head", "args1", string(out))

基本上,您必须自己执行管道,并使用两个单独的命令,而不是尝试使用管道组成的命令调用一次命令。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31124135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档