首頁 > 後端開發 > Golang > 為什麼 Go 中的 exec.Command('mv')` 因通配符而失敗,如何修復它?

為什麼 Go 中的 exec.Command('mv')` 因通配符而失敗,如何修復它?

Patricia Arquette
發布: 2024-12-31 19:49:13
原創
347 人瀏覽過

Why Does `exec.Command(

為什麼 Go 中的 MV 通配符 Exec 指令失敗?

當嘗試使用 Go 中的 exec 套件執行 mv 命令時,如果命令包含用於選擇多個檔案的通配符星號 (*),您可能會遇到錯誤。出現此問題的原因是,與 shell 不同,Go 運行時不會將星號解釋為通配符。

要解決此問題,您有兩個選項:

選項1:手動展開通配符

您可以使用filepath.Glob() 函數自行手動擴展通配符,該函數傳回一個切片匹配檔案路徑。操作方法如下:

import (
    "filepath/glob"
    "os/exec"
)

cmd := exec.Command("mv")
files, err := glob.Glob("./source-dir/*")
if err != nil {
    // Handle error
}
args := []string{"--", "./dest-dir"}
args = append(args, files...)
cmd.Args = args

output, err := cmd.CombinedOutput()
登入後複製

選項 2:呼叫 Shell

或者,您可以呼叫 Shell 並讓它為您執行通配符擴充。以下是您的操作方法:

import (
    "os/exec"
)

cmd := exec.Command("sh", "-c", "mv ./source-dir/* ./dest-dir")
output, err := cmd.CombinedOutput()
登入後複製

此方法利用 shell 自己的通配符處理功能。

遞歸檔案移動

如果您需要將所有檔案從一個目錄遞歸移到另一個目錄,可以使用filepath.Walk() 函數迭代來源目錄並對遇到的每個子目錄和檔案執行mv 指令。

以上是為什麼 Go 中的 exec.Command('mv')` 因通配符而失敗,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板