recode 및 Shell Script 를 이용한 간단한 파일 문자인코딩 변경하기

System Story/CentOS 5,6 2016.04.08 16:34

각기 다른 개발환경 및 에디터등에서 코딩 및 저장된 파일들은 의도치 않게 원치 않는 인코딩 상태로 서버에 배포되는 경우가 있다.


이는 곧 Apache, Tomcat 등 WEB/WAS Aplicaiton Server의 Charset 설정 환경등에 의해 경우에 따라 파일 인코딩 문제로 이어질 수 있다.


이때 아래와 같이 Linux 에서 제공하는 recode Util과 간단한 Shell Script 를 활용한다면 쉽게 해결 할 수 있을 것이다.


 

1. recode Util 설치

 

[root@Test01 shell]#
[root@Test01 shell]# yum -y install recode
Loaded plugins: allowdowngrade, downloadonly, fastestmirror, priorities, security
Loading mirror speeds from cached hostfile
* base: ftp.neowiz.com
* extras: ftp.neowiz.com
* rpmforge: ftp.riken.jp
* updates: ftp.neowiz.com
base                                                | 1.1 kB     00:00    
extras                                              | 2.1 kB     00:00    
rpmforge                                            | 1.9 kB     00:00    
updates                                             | 1.9 kB     00:00    
updates/primary_db                                  | 700 kB     00:00    
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package recode.x86_64 0:3.6-22.el5.centos set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================
Package                        Arch             Version                  Repository       Size
================================================================================================
Installing:
recode                         x86_64           3.6-22.el5.centos        extras          900 k

Transaction Summary
================================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 900 k
Downloading Packages:
recode-3.6-22.el5.centos.x86_64.rpm                       | 900 kB     00:00    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : recode                                                    1/1

Installed:
  recode.x86_64 0:3.6-22.el5.centos                                                                                                                                                                                             

Complete!
[root@Test01 shell]#
[root@Test01 shell]#


 

 

2. Script 작성 및 실행 결과 보기
 - TARGET_DIR 변수에 정의한 경로 이하에 있는 모든 File의 List를 검색하여, 해당 파일의 charset 정보를 확인 후 CHANGE_CODE 변수에 정의한 utf-8 로 변경

 

[root@Test01 shell]#
[root@Test01 shell]# vi change_charset.sh
#!/bin/bash

CHANGE_CODE=utf-8
TARGET_DIR=/root/recode
TARGET_LIST=`find ${TARGET_DIR} -type f`


for LIST in ${TARGET_LIST};
do
 SOURCE_CHARSET=`file -i ${LIST} | cut -d "=" -f 2`
 if [ "$SOURCE_CHARSET" != "$CHANGE_CODE" ];
 then
  recode -v ${SOURCE_CHARSET}...${CHANGE_CODE} ${LIST} 2>&-
 fi
done

[root@Test01 shell]#
[root@Test01 shell]#
[root@Test01 shell]# chmod 755 ./change_charset.sh

[root@Test01 shell]#
[root@Test01 shell]#
[root@Test01 shell]# file -i /root/recode/*
/root/shell/test.org: text/plain; charset=iso-8859-1
/root/shell/test.txt: text/plain; charset=iso-8859-1
[root@Test01 shell]#
[root@Test01 shell]#
[root@Test01 shell]#
[root@Test01 shell]# ./change_charset.sh
[root@Test01 shell]#
[root@Test01 shell]#
[root@Test01 shell]# file -i /root/recode/*
/root/shell/test.org: text/plain; charset=utf-8
/root/shell/test.txt: text/plain; charset=utf-8
[root@Test01 shell]#
[root@Test01 shell]#
[root@Test01 shell]#

 

 

만약 변경할 Charset 값이 utf-8 방식이 아니라면 CHANGE_CODE 변수의 내용을 수정거나 Parameter 를 받는 방식으로 Shell Script를 수정하면 될 것이다.

 

 

 

 

 

Trackbacks 0 : Comments 0

Write a comment