본문 바로가기
Projects/GOLANG

Golang - 파일명 일괄 변경하기

by Wilkyway 2022. 11. 11.

회사 동료 PC에서 파일명을 일괄 변경시켜줘야 하는 일이 발생했습니다. 예를들면 앞부분에 특정 구문을 붙인다던지, 뒷부분에 날짜를 일괄 붙인다는지 하는 식으로 말이죠. 검색해보면 여러가지 툴/방법이 있긴 합니다만 오랫만에 직접 프로그램을 짜서 도움을 줘볼까 합니다. 그래서 이번엔 쉽게 실행파일 생성이 가능한 Go언어를 이용해서 만들어보기로 했습니다. Java나 C#은 가상머신 세팅에서 약간의 까다로움이 발생하거나 괜히 덩치만 커질 수도 있었고, Python은 친구 PC에 Python을 굳이(개발자도 아닌데) 깔아야 하는 번거로움이 있고, Javascript는...음....?? 

 

Go언어 설치나 세팅 부분은 다른 글들에도 많으니까 패스하도록 하겠습니다.

 

src 폴더 하위에 신규 폴더하나를 생성하고, 파일명은 test.go로 하여 아래와 같이 작성하였습니다.

 

<test.go>

 

package main

import (
	"fmt"
	"io/ioutil"
	"os"
	"strings"
)

func main() {
	// fmt.Println("Hello, World!")
	targetDir := "./temp"
	files, err := ioutil.ReadDir(targetDir)
	if err != nil {
		fmt.Println(err)
		return
	}
	for _, file := range files {
		
		fmt.Println(file.Name())  // 파일명 확인
		file_name := file.Name()  // 단순파일명
		file_fullname := targetDir + "/" + file_name  // 전체 파일명

		new_name := strings.Replace(file_name, "CMM_ROOM_", "2022", 1) //원본 문자열, 바꿀문자열, 신규문자열, 바꿀횟수
		new_fullname := targetDir + "/" + new_name  // 신규 파일명(경로포함)

		os.Rename(file_fullname, new_fullname) // 변경
	}
}

 

테스트를 위해 현재 프로젝트 폴더 하위에 temp폴더를 생성하고, 내부에 몇개의 파일들을 생성해보도록 하겠습니다.

 

이 프로그램의 목적은 파일명의 "CMM_ROOM_" 부분을 "2022"로 일괄 변환하는 것입니다. 프로그램을 실행해보면..

go run test.go

잘 변환되네요..

이제 이걸 배포파일로 만들어주면 오늘의 작업 끝~~

go buil test.go

반응형

댓글0