Go에서는 exec 패키지를 사용하여 외부 명령을 실행합니다. 와일드카드('./source-dir/*')를 사용하여 'mv' 명령을 실행하려고 하면 "해당 파일 또는 디렉터리가 없습니다."라는 출력과 함께 "종료 상태 1" 오류가 발생합니다. 그러나 와일드카드를 사용하여 터미널에서 동일한 명령을 실행하면 성공합니다.
쉘과 달리 쉘이 와일드카드를 해석하고 이를 일치하는 목록으로 확장합니다. 파일에서 exec 패키지는 와일드카드를 문자 그대로 단일 인수로 처리합니다. 이는 'mv' 명령이 파일 이름 목록 대신 와일드카드('*')를 본다는 것을 의미합니다.
Go에서 와일드카드를 사용하려면 두 가지 접근 방식이 있습니다.
import "path/filepath" files, err := filepath.Glob("./source-dir/*") if err != nil { // Handle error } cmd := exec.Command("mv", files...)
cmd := exec.Command("/bin/sh", "-c", "mv ./source-dir/* ./dest-dir")
모든 파일을 소스 디렉터리에서 대상 디렉터리로 재귀적으로 이동하려면 소스 디렉터리를 재귀적으로 반복하고 이동해야 합니다. 발견된 각 파일이나 디렉터리. 소스에 하위 디렉터리가 포함된 경우 각 하위 디렉터리를 재귀적으로 이동하거나 트리 이동 기능을 제공하는 os와 같은 패키지를 사용할 수 있습니다.
위 내용은 터미널이 성공하는 동안 내 Go `exec.Command`가 와일드카드를 사용하여 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!