[RHEL 공통] 데이터 이관 시 신규 장비에서 파일 내용이 깨질 경우
본문 바로가기
IT 이야기/Linux

[RHEL 공통] 데이터 이관 시 신규 장비에서 파일 내용이 깨질 경우

by 찬찬이 아빠 2019. 11. 18.
반응형

데이터 이관 시 기존장비(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 --name *.jsp --name *.sh --name *.java \
   --name *.html --name *.htm --name *.css --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 --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
반응형

댓글