>백엔드 개발 >Golang >Go에서 `exec.Command('mv')`가 와일드카드로 인해 실패하는 이유는 무엇이며 어떻게 해결할 수 있나요?

Go에서 `exec.Command('mv')`가 와일드카드로 인해 실패하는 이유는 무엇이며 어떻게 해결할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-12-31 19:49:13363검색

Why Does `exec.Command(

Go에서 MV 와일드카드에 대한 Exec 명령이 실패하는 이유는 무엇입니까?

Go에서 exec 패키지를 사용하여 mv 명령을 실행하려고 하면, 명령에 여러 파일을 선택하기 위한 와일드카드 별표(*)가 포함되어 있으면 오류가 발생할 수 있습니다. 이 문제는 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: 셸 호출

또는 셸을 호출하여 와일드카드 확장을 수행하도록 할 수도 있습니다. . 수행 방법은 다음과 같습니다.

import (
    "os/exec"
)

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

이 접근 방식은 셸 자체의 와일드카드 처리 기능을 활용합니다.

재귀적 파일 이동

필요한 경우 모든 파일을 한 디렉터리에서 다른 디렉터리로 반복적으로 이동하려면 filepath.Walk() 함수를 사용하여 소스 디렉터리를 찾아 각 하위 디렉터리와 파일에 대해 mv 명령을 실행합니다.

위 내용은 Go에서 `exec.Command('mv')`가 와일드카드로 인해 실패하는 이유는 무엇이며 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.