首页 >后端开发 >Golang >如何在 Go 中运行带有通配符的'mv”命令?

如何在 Go 中运行带有通配符的'mv”命令?

DDD
DDD原创
2024-12-14 20:48:13180浏览

How to Run `mv` Commands with Wildcards in Go?

在 Go 中使用通配符运行 MV 命令

在 Go 中,exec 包可以执行外部命令。然而,当尝试使用 exec.Command 执行带有通配符的 mv 命令时,可能会出现“没有这样的文件或目录”的错误。

出现此错误的原因是,当用户输入包含以下内容的命令时通配符,例如“mv ./source-dir/*”,shell 将通配符扩展为匹配文件的列表。然而,在 Go 中,exec.Command 函数只是将包含通配符的字符串作为参数传递给命令,而不是扩展它。

要解决此问题,可以使用以下方法手动扩展通配符: filepath.Glob 函数,返回匹配文件路径的切片。或者,可以调用 shell 来执行扩展。这可以通过使用 exec.Command 函数来实现,其中“/bin/sh”作为第一个参数,后跟“-c”和带有通配符的命令字符串,例如:

cmd := exec.Command("/bin/sh", "-c", "mv ./source-dir/* ./dest-dir")

通过利用这种方法,shell 将处理通配符的扩展,从而使 mv 命令能够成功执行。

以上是如何在 Go 中运行带有通配符的'mv”命令?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn