[OSX] 한글명의 파일이름 검색 문제 Computer Tip

일단 우분투에서는 

$ find . | grep 시크릿 

과 같이 명령을 주면 파일 이름 중에 "시크릿"이 들어 있는 것을 출력합니다.

하지만 똑같은 명령을 OSX에서의 터미널에서 해 보시면 출력이 되지 않을 것입니다.
어~~??? 영문은 되는데 왜 한글은 안 되지???
궁금증이 생겨 한번 살펴보았습니다.

일단 현재 터미널 인코딩을 살펴보니,

$ env | grep LANG
LANG=ko_KR.UTF-8

이렇게 UTF-8 이라고 나오네요.

일단 터미널에 트정 폴더에 들어가서,

$ find . | tail -n 1 > f1.txt
$ cat f1.txt
./컴관련/해킹/해킹도우미/해킹도우미_2.iso

(위의 것은 단지 예시 입니다~ ^^)

이제 위의 것을 똑같이 copy & paste 하여 vi 에서 읽어다가 저장을 f2.txt 라 했습니다.

$ ll f?.txt
-rw-r--r--  1 mcchae  staff  120  4  1 18:19 f1.txt
-rw-r--r--  1 mcchae  staff   57  4  1 18:19 f2.txt

어라??? 두개의 크기가 배 비슷하게 차이가 나는 것이었습니다.

둘다 cat 하면 똑같은 것을 출력합니다.

뭔가 인코딩 문제다 생각이 들더군요..
처음에는 Mac의 파일시스템이 UTF-16을 사용한다는 것을 기억하고는

$ iconv -f UTF-8 -t UTF-16 f1.txt 
를 해 보았지만 ... 똑같은 f2.txt가 나오지 않더군요.

결국 "iconv -l" 명령으로 인코딩을 살펴본 결과,
"UTF-8-MAC" 이란 코딩 규칙이 있더군요.

$ iconv -f UTF-8-MAC -t UTF-8 f1.txt > f3.txt
$ diff f2.txt f3.txt

드디어 찾았습니다.

각설하고, 한글 이름이 검색되지 않은 원인은,

터미널에서 

$ find . | grep 시크릿

이렇게 주었을 때, find . 의 결과는 UTF-8-MAC 인코딩 결과로 나오지만,
터미널의 "시크릿"은 UTF-8 인코딩 입니다.

고로,

OSX에서는

$ find . | iconv -c -f UTF-8-MAC -t UTF-8 | grep 시크릿

이런 식으로 검색하면 한글 검색이 잘 됩니다.

~/.profile 등에
alias hgrep='iconv -c -f UTF-8-MAC -t UTF-8 | grep '

와 같이 alias 를 추가하시면,

$ find . | hgrep 시크릿 

와 같은 식으로 검색 가능합니다. ^^


참고로..

$ iconv -f UTF-8-MAC -t UTF-8 f1.txt > f3.txt

라고 했는데, 그 중간에 오류가 발생한다면,

$ iconv -f UTF-8-MAC -t UTF-8//IGNORE f1.txt > f3.txt

라고 //IGNORE 를 target ENCODING 뒤에 추가해 주면 됩니다.


어느분께는 도움이 되셨기를...

핑백

  • 지훈현서 : [OS X] rsync File name too long (63) 문제 해결 방법 2015-06-05 16:07:23 #

    ... oo long 이라는 오류가 동일하게 뜨는 것이었습니다. 아무래도 UTF-8-MAC 인코딩 때문에 맥 OS 자체가 가지고 있는 bug 아닌가 싶습니다.(맥에서 한글 파일명 검색 블로그 참고) 그래서 rsync-3.1.1 소스를 가져다,generator.c 소스에서 1734번째 라인부터 세줄을 위와 같이 코맨트로 막고 build 한 ... more

  • 지훈현서 : [OS X] 10가지 유용한 터미널 명령 2016-02-13 18:49:44 #

    ... 성해 놓는 인덱스를 검색][find 명령으로 한글 포함된 파일을 찾기 힘든데 반해 mdfind는 한글포함 파일을 쉽게 검색합니다. OS X에서 한글명의 find 검색 문제 참조] OS X는 원래부터 스포트라이트(Spotlight) 검색을 지원했다. 디스크에서 파일을 찾아주고 메타데이터, 파일 콘텐츠 등 다양한 기 ... more

덧글

  • 랜덤여신 2011/04/01 21:06 # 삭제 답글

    유니코드에서는 같은 문자를 여러 가지로 표현할 수 있습니다. 맥 OS X는 내부적으로 한글을 'ㅎㅏㄴㄱㅡㄹ' 형태로 저장하기 때문에 문제가 발생하는 것이죠. 그런데 터미널이 맥 OS X와 다른 인코딩을 쓰는 건 좀 의외군요.
  • 지훈현서아빠 2011/04/01 22:23 #

    음.. 버츄얼박스로 우분투를 설치하여 맥파일시스템을 마운트 시켜서 위와 같은 "ㄱㅏㄴㅏㄷㅏ" 처럼 나온다는 사실은 알고 있었는데,
    그것이 UTF-16 인코딩 문제라고 알고 있었는데 맥의 인코딩이 별도의 UTF-8 (for mac)을 쓰는 것인가 궁금하군요...
댓글 입력 영역

구글애드텍스트