본문 바로가기

Linux & Ubuntu

우분투 환경에서 텍스트 파일의 일괄 변환

데이터 셋을 다운로드 받았는데 인코딩이 EUC-KR인 txt파일 이었다. 회사 컴퓨터는 우분투 쓰는데 파일을 열자마자 글자가 다 깨져 있어서 어찌나 당황했는지...

 

그나마 영어 부분은 깨지지 않아서 금방 인코딩 문제임을 깨달을 수 있었다. 인코딩 바꾸고자 일일이 처리하는 건 비효율 적이니 터미널 명령어를 이용해서 일괄 변경하기로 했다.

 

find . -type f -execdir iconv -f euckr -t utf-8 {} -o {}.tmp \\; -execdir mv -f {}.tmp {} \\;

 

진행하다가 iconv: illegal input sequence at position 54169829 에러가 났다. 검색해보니 icov를 사용하여 문서 인코딩을 변환하는 과정에서 input문서를 한줄씩 읽으면서 변환하기 때문에 깨진 글자가 들어가거나 표현할 수 없을 때 나타난다고 한다.

 

-c옵션을 주면 에러나는 부분은 건너뛰고 나머지를 변환해 준다. (iconv -c -f)