오리지날초이 2013. 10. 31. 16:33

윈도우에서 생성한 input 파일을 리눅스에서 읽을 때 끝줄에 ^M 등의 특수문자가 삽입된다.

이를 해결하기 위해 사용한다.


하위 디렉토리 적용을 위해서는 아래와 같은 방법으로사용.

find 하부디렉토리 -name "*.*" |xargs dos2unix


자세한 사용법은 아래를 참고


원본 출처 : http://amornatura.tistory.com/42


도스에서 작업한 txt파일을 리눅스에서 불러와 작업하면 상당히 애로사항이 많게 됩니다. 


파일을 편집하다 보면 뒤에 ^M이 생기는 것도 볼 수 있구요... -.-

이외에도 윈도우에서는 UTF-8로 기본 저장하지 않기 때문에 가끔 문제를 일으키기도 합니다.


하지만 리눅스에선 간단히 파일의 인코딩과 속성을 바꿀 수 있어요.


우선 파일의 속성을 살펴보기 위해 다음과 같이 입력합니다.

file test.txt

만약 도스에서 편집된 파일이면 다음과 같이 나옵니다.


test.txt: ISO-8859 text, with CRLF line terminators


이제 파일을 변환해주기 위해 다음과 같이 명령어를 입력합니다. 

dos2unix test.txt

만약 dos2unix 가 설치되어 있지 않다면.... 

sudo apt-get install dos2unix 로 설치해주세요. ^^ 이제 file test.txt 를 다시 입력해 상태를 확입합니다.



test.txt: ISO-8859 text


이제 인코딩을 바꾸어줄 순서인데요. iconv 라는 명령어와 recode 라는 명령어 두개가 있습니다. recode의 경우 *.txt를 지원해서 참 편리하지만... 이상하게도 제가 가지고 있던 파일에선 UTF-8로 변환시 한글이 왕창 깨지더군요..ㅠㅠ 저는 iconv로 변환했을 때 한글이 깨지지 않았습니다. 


iconv -f EUC-KR -t UTF-8 test.txt > test.txt1


위와 같이 입력해주는데 처음에는 현재 인코딩을, 두번째에는 원하는 인코딩을 쓰시면 됩니다. *.txt를 지원하지 않기 때문에 배치파일을 만들어서 쓰시거나 노가다를 좀 해주시면 됩니다... (라고 무책임하게 말하기ㅡ.ㅡㅋㅋ)


다시 file 명령어를 이용해 속성을 확인해보면, 


test.txt: UTF-8 Unicode text


그리고 vi를 이용해 한글이 깨졌는지 확인해보면...! 깨지지 않았죠? (전 안깨졌어요...ㅋ)


많은 파일을 쉽게 변환하는 팁을 알려드리면... 결과파일의 파일이름을 쓸 때 확장자를 조금만 바꾸어주세요. 우분투의 경우 rename 이라는 명령어(별도로 설치하셔야합니다.)를 이용해 간단히 바꿀 수 있어요. 


참고로 recode로 인코딩을 바꾸는 방법은 아래와 같습니다.


 recode -f EUC-KR *.txt


자세한 옵션설명은 구글에서 검색해보세요. ^^



728x90
반응형