IT 이야기/Linux
[RHEL 공통] 데이터 이관 시 신규 장비에서 파일 내용이 깨질 경우
찬찬이 아빠
2019. 11. 18. 15:21
반응형
데이터 이관 시 기존장비(AS-IS) 시스템의 언어가 EUC-KR이라서 신규 장비(TO-BE) 시스템 언어인 UTF-8에서 파일 내용 중 한글이 모두 깨졌습니다.
UTF-8로 파일 내용을 일괄적으로 변경이 필요할 때 어떻게 해야 할까요?
1. 파일 내용 변경은 iconv라는 리눅스 명령어를 통해서 변경이 가능합니다.
1
|
# iconv -f cp949 -t utf8 "변경하고자 하는 파일명" > "변경될 파일명"
|
cs |
2. 특정 경로, 특정 타입의 파일 내용들을 일괄적으로 변경하려면 다음과 같이 스크립트를 만들어서 실행하여 변경합니다.
아래 샘플 스크립트의 내용은 dirname에 지정된 특정 확장자를 검색하여 file encoding type이 us-ascii, iso-8859-1, unknown-8bit, binary로 된 파일들을 일괄적으로 EUC-KR에서 UTF-8로 변경하는 내용입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/bin/sh echo "Directory Full Name : " read ID file_type=$(find ${ID} -name *.sql -o -name *.jsp -o -name *.sh -o -name *.java \ -o -name *.html -o -name *.htm -o -name *.css -o -name *.js) encode_name="us-ascii | iso-8859-1 | unknown-8bit | binary" file_name=$(file ii ${file_type} | egrep "${encode_name}" | awk -F"[:]" '{print $1 }'_ echo "===== Checking file type and Changing file encoding... =====" for encoding in ${file_name} ; do /usr/bin/iconv -c -f cp949 -t utf8 $encoding > $encoding.temp && /bin/mv -f $encoding.temp $ encoding done echo "There are $(fine ${ID} -type d | wc -l) directory and $(find ${ID} -type f | wc -l) files." echo " " echo "===== Have a Good Job! =====" | cs |
반응형