반응형
Go 언어로 작성한 파일찾기 프로그램 예제입니다. 검색하고자 하는 Directory와 파일명을 입력하면 찾는 프로그램입니다. 사용 방법은
filecheck.exe <검색Dir> <대상file>
과 같이 사용하면 되며, 아래 예시와 같이 사용하면 됩니다.
소스코드는 아래와 같습니다.
package main import ( "fmt" "os" "path/filepath" ) var ( targetFolder string targetFile string searchResult []string ) func findFile(path string, fileInfo os.FileInfo, err error) error { if err != nil { fmt.Println(err) return nil } absolute, err := filepath.Abs(path) if err != nil { fmt.Println(err) return nil } if fileInfo.IsDir() { fmt.Println("Searching directory ...", absolute) testDir, err := os.Open(absolute) if err != nil { if os.IsPermission(err) { fmt.Println("No permission to scan ...", absolute) fmt.Println(err) } } testDir.Close() return nil } else { matched, err := filepath.Match(targetFile, fileInfo.Name()) //matched, err := filepath.Glob(targetFile) if err != nil { fmt.Println(err) } if matched { add := "Found : " + absolute searchResult = append(searchResult, add) } } return nil } func main() { if len(os.Args) != 3 { fmt.Printf("USAGE : %s <target_directory> <target_file> \n", os.Args[0]) os.Exit(0) } targetFolder = os.Args[1] targetFile = os.Args[2] fmt.Println("Searching for [", targetFolder, "]") testFile, err := os.Open(targetFolder) if err != nil { fmt.Println(err) os.Exit(-1) } defer testFile.Close() testFileInfo, _ := testFile.Stat() if !testFileInfo.IsDir() { fmt.Println(targetFolder, " is not a directory!") os.Exit(-1) } err = filepath.Walk(targetFolder, findFile) if err != nil { fmt.Println(err) os.Exit(-1) } fmt.Println("\n\nFound ", len(searchResult), " hits!") fmt.Println("@@@@@@@@@@@@@@@@@@@@@@") for _, v := range searchResult { fmt.Println(v) } }
- 끝 -
반응형
'Programming > Golang' 카테고리의 다른 글
Go언어 oracle 연결 (2) | 2020.03.26 |
---|---|
Gotk3를 이용한 go언어 GUI 개발 예제 (0) | 2020.03.16 |
andlabs/ui 를 이용한 go언어 GUI개발 예제 (0) | 2020.03.16 |
Go언어 초간단 async 예제 (0) | 2020.03.16 |
Go언어 - liteIDE설치 및 실행 (2) | 2020.03.16 |