어제와 똑같이 살면서 다른 미래를 기대하지 말자

쉘 스크립트 - 파일인코딩 euckr => utf8로 변환 본문

카테고리 없음

쉘 스크립트 - 파일인코딩 euckr => utf8로 변환

플랜액터 2009. 1. 14. 11:50
1. 아래 스크립트를 convert.sh로 작성합니다.
#!/bin/sh
############################################################
# ./convert.sh  디렉토리
# 디렉토리로 지정한 하위 파일내용 인코딩을 utf8로 변환합니다.
############################################################

fileConvert()
{
        for f in $1/*
        do
                if test -d $f
                then
                        fileConvert $f
                else
                        echo $f
                        iconv -f cp949 -t utf8 $f > $f.tmp; mv -f $f.tmp $f;
                fi
        done
}

echo '==================================================';
echo 'Convert cp949 => utf8변환..';
echo '==================================================';
if [ $# -ne 1 ]
then
        echo '변환할 디렉토리 인자를 입력해주세요.';
        echo './convert.sh drectory';
else
        fileConvert $1
fi
echo '==================================================';

2. convert.sh를 실행합니다. 변환할 디렉토리를 지정해야하며 하위 파일들에 대해 변환을 처리합니다.
# sh convert.sh 디렉토리경로

3. convmv로 파일명과 디렉토리명도 utf8로 변환합니다. 마찬가지로 지정경로 하위에 대해 처리됩니다.
# convmv --notest -f cp949 -t utf8 -r 디렉토리경로

※ 주의하실 것은 확장자 판단을 못한다는 겁니다.. ㅡㅡ^ 이미지나 뭐 여타 것들..
.html .js .php 뭐 이런 파일들만 처리하도록 손을 봐야 할 겁니다.

그리고 아래는 지정한 파일에 대해서만 변환하고자 할 때 쓰느라고  조금 수정을 했습니다.
사용법은
sh ./fileConvert /www/file1.php /www/file2.php ...
sh ./fileConvert.sh /www/file/*.js 이렇게도 사용가능합니다.
#!/bin/sh
############################################################
# ./fileConvert.sh  file1 file2...
############################################################

echo '==================================================';
echo 'Convert cp949 => utf8변환..';
echo '==================================================';
if [ $# -lt 1 ]
then
        echo '변환할 파일 인자를 입력해주세요.';
        echo './convert.sh file1 file2 file3 ...';
else
        for f in $*
        do
                if [ -f $f ]
                then
                        echo 'Convert File : '$f
                        iconv -f cp949 -t utf8 $f > $f.tmp; mv -f $f.tmp $f;
                fi
        done
fi
echo '==================================================';

음.. 쉘 스크립트를 구글링하면서 문법 맞춰서 처음 작성해 봤는데.. 생각보다 제대로 된 코드를 만들기 쉽지 않네요..
쉘 스크립트 관련한 괜찮은 사이트 아시는 분은 도움 좀 주세요..^^


Comments