golang failed exec命令在终端中工作

前端之家收集整理的这篇文章主要介绍了golang failed exec命令在终端中工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试使用exec包运行mv命令时收到错误.

这是我想要做的一个例子:

cmd := exec.Command("mv","./source-dir/*","./dest-dir")
output,err := cmd.CombinedOutput()

cmd.Run()

错误返回以下内容
退出状态1

输出返回此mv:rename ./source-dir/*到./dest-dir/*:没有这样的文件或目录

当我改变这一行时,我实际上可以让脚本工作:

cmd:= exec.Command(“mv”,“./ source-dir / *”,“./ destination-dir”)

以下内容

cmd:= exec.Command(“mv”,“./ source-dir / file.txt”,“./ destination-dir”)

该命令工作并成功移动文件,但使用通配符不起作用.似乎星号未在命令中用作通配符.这是为什么?还有另一种在GO中使用通配符的方法吗?如果没有那么我怎么能以递归方式将所有文件从source-dir移动到dest-dir?

谢谢

当您在shell中键入命令时,shell将获取./source_dir/*并将其替换为匹配的所有文件的列表,每个参数一个. mv命令查看文件名列表,而不是通配符.

你需要做的是自己做同样的事情(使用filepath.Glob返回匹配文件的[]字符串),或者调用shell以便它可以完成工作(使用exec.Command(“/ bin / sh”),“ – c”,“mv./ source_dir /* ./dest_dir”)).

猜你在找的Go相关文章