首頁 >後端開發 >Golang >如何在 Go 中執行帶有通配符的'mv”命令?

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

DDD
DDD原創
2024-12-14 20:48:13175瀏覽

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