Rumah > pembangunan bahagian belakang > Golang > Mengapakah `exec.Command('mv')` Gagal dengan Wildcard dalam Go dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah `exec.Command('mv')` Gagal dengan Wildcard dalam Go dan Bagaimana Saya Boleh Membetulkannya?

Patricia Arquette
Lepaskan: 2024-12-31 19:49:13
asal
407 orang telah melayarinya

Why Does `exec.Command(

Mengapa Exec Command Gagal untuk MV Wildcard dalam Go?

Apabila cuba melaksanakan perintah mv menggunakan pakej exec dalam Go, anda mungkin menghadapi ralat jika arahan itu menyertakan asterisk kad bebas (*) untuk memilih berbilang fail. Isu ini timbul kerana masa jalan Go tidak mentafsirkan asterisk sebagai kad bebas, tidak seperti cangkerang.

Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:

Pilihan 1: Kembangkan Secara Manual Kad bebas

Anda boleh mengembangkan sendiri kad bebas secara manual menggunakan fungsi failpath.Glob(), yang mengembalikan sepotong laluan fail yang sepadan. Begini cara anda melakukannya:

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()
Salin selepas log masuk

Pilihan 2: Sebut Shell

Sebagai alternatif, anda boleh menggunakan shell dan biarkan ia melakukan pengembangan kad bebas untuk anda . Begini cara anda melakukannya:

import (
    "os/exec"
)

cmd := exec.Command("sh", "-c", "mv ./source-dir/* ./dest-dir")
output, err := cmd.CombinedOutput()
Salin selepas log masuk

Pendekatan ini memanfaatkan keupayaan pengendalian kad bebas shell sendiri.

Pergerakan Fail Rekursif

Jika anda perlukan untuk mengalihkan semua fail secara rekursif dari satu direktori ke direktori lain, anda boleh menggunakan fungsi filepath.Walk() untuk mengulang melalui direktori sumber dan laksanakan arahan mv untuk setiap subdirektori dan fail yang ditemui.

Atas ialah kandungan terperinci Mengapakah `exec.Command('mv')` Gagal dengan Wildcard dalam Go dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan