在 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中文网其他相关文章!