[프로젝트 C언어] 일괄 파일 이름 변경기(치환기)


쯔꾸루게임 기계번역(번역기 번역)을 진행중이였는데 번역 방식이 일괄 번역 프로그램을 통해 *_번역.txt 로 바뀐 파일을 끝에 _번역을 지우고 적용하는 폴더에 옮겨놓고 적용을 눌러야 번역이 완료됩니다.

 

끝에 "_번역"을 지우는건 인터넷에 많이 배포되어 있는 이름 변경 프로그램을 쓰면 됩니다.

 

그중에서도 나름 대표적인게 인터넷상 배포되고 있는 Darknamer과 같은 프로그램을 쓰면 됩니다만,

파일 이름을 일괄 변경해주는 프로그램을 만들고 싶다는 아이디어가 번뜩이게 찾아왔습니다.

 

E.Z Subtitles

자막 이름 변경 노가다 하는게 싫어서 제가 직접 만든 E.Z Subtitles 라는 프로그램도 있습니다만 이 프로그램은 자막 한정으로는 매우 유용하지만 1:1 매칭이 필요한 상황 전용으로 만들었기 때문에 지금의 상황엔 맞지 않습니다.

 

특히 이번에 팀프로젝트를 진행하게 되었는데 언어 제약 조건이 C인데

C언어로 파일 이름 치환기를 만든건 잘 보이지 않아서 한번 만들어보면 좋겠다 해서 한번 도전해보게 되었습니다.

 

완성품

* 내용은 최종 보고서에 나온 프로그램 설명서로 대체합니다.

1. 디렉토리 내부 파일을 일괄적으로 가져오기 위해 폴더 경로를 프로그램에 제공합니다.

 

2. 파일 경로를 제공하자 내부에 있는 자막 파일을 일괄적으로 로딩한 것을 볼 수 있습니다.

 

< 현재 작업전 파일의 상태입니다.>

 

3. p인 치환모드를 입력하고 자막 파일의 “강철의 연금술사” 를 찾아서 “Full Metal Alchemist Brotherhood” 로 치환하는 작업을 수행했습니다.

 

<원하는 대로 파일의 이름이 일괄적으로 잘 변경되었습니다.>

4. 기존엔 자막의 파일 이름이 “강철의 연금술사” 이고 영상 파일은 “Full Metal AlchestMist Brotherhood” 라 자막 파일 이름이 매칭이 안됬는데 프로그램의 치환기능을 사용해보니 간단하게 파일 이름을 맞출 수 있는 모습입니다.

 

해당 파일은 창의공학설계 영상 파일입니다. 그런데 OO과라는 정보만 있지 강의명에 대한 정보가 존재하지 않습니다. 프로그램을 이용하여 이것도 간편하게 추가해보겠습니다.

 

2. 이앞과 동일하게 경로를 제공하고 이번엔 l : 왼쪽에 문자열 삽입 기능을 이용해보겠습니다.

 

3. 파일 이름 앞에 “창의공학설계_”라는 문자열을 삽입하는 기능을 수행합니다.

 

4. 파일 이름이 정상적으로 잘 변경된 모습입니다.

 

성능 평가

C언어로 구현해서 그런지 파이썬으로 구현한 파일 이름 변경기보다 확연히 빠릅니다. 성능은 확실하게 보장합니다.

* 파일 이름 변경의 경우 C언어에서 자체적으로 지원하는 rename() 함수를 쓰는데 이게 I/O 접근 속도가 매우 빠른거 같습니다. 

용량도 137kb로 파이썬으로 대충 만든거랑 비교해서 용량은 10배 차이납니다.

 

문제는 C언어 고질의 문자열 처리. 치환 길이가 너무 길어지거나 추가한 문자열이 너무 길면 문제가 발생합니다.

C++엔 string이 있으니 C++로 만들었으면 더 좋은 프로그램을 만들 수 있었을거 같습니다.

 

C로 이런걸 만들었다는거에 대단히 만족하고 있습니다 ㅎㅎ

 

COMMENT WRITE