일반 자료실

제목 euckr<->utf8 포맷 일괄변경(리눅스쉘)
글쓴이 양승현 작성시각 2009/08/20 11:34:51
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 13851   RSS
#########################################################################################
#!/bin/sh

# Maintainer    : Chan Hwang (innuendo9@gmail.com)
# Last Modify   : 2006.02.24
# 특정 디렉토리의 euckr 포맷을 utf8 포맷으로 일괄 변환한다
# 사용법: uni_change.sh 디렉토리명|파일명 [포맷형태]
# 주의사항 : 스크립트 구동전 반드시 백업을 하십시오

if [ -z "$1" ]; then
    echo "usage: uni_change.sh dir|file [encoding]"
    exit 1
fi

if [ -z "$2" ]; then
    FENCODE="euckr"
    TENCODE="utf8"
fi

if [ "X$2" = "Xutf8" ]; then
    FENCODE="euckr"
    TENCODE="utf8"
elif [ "X$2" = "Xeuckr" ]; then
    FENCODE="utf8"
    TENCODE="euckr"
fi

 

if [ -d "$1" -a -w "$1" ]; then
    FLAG="D"
elif [ -f "$1" -a -w "$1" ]; then
    FLAG="F"
else
    FLAG="X"
fi


if [ "X$FLAG" = "XF" ]; then
    FILE=$1
    iconv -f $FENCODE -t $TENCODE $FILE > ${FILE}_new 2> /dev/null
    RETVAL=$?
    if [ "X$RETVAL" = "X0" ]; then
        mv -f ${FILE}_new $FILE
        echo "$FILE encoding changed ... success"
    else
        rm -f ${FILE}_new
        echo "$FILE encoding changed ... fixed"
    fi

elif [ "X$FLAG" = "XD" ]; then
    DIR=$1
    LIST=`find "$DIR" -type f`

    for file in $LIST; do
        iconv -f $FENCODE -t $TENCODE $file > ${file}_new 2> /dev/null
        RETVAL=$?
        if [ "X$RETVAL" = "X0" ]; then
            mv -f ${file}_new $file
            echo "$file encoding changed ... success"
        else
            rm -f ${file}_new
            echo "$file encoding changed ... fixed"
        fi
    done

else
    echo "$file encoding changed ... failed"

fi

exit 0
#########################################################################################

예전에 euckr상태로 작업된 파일을 리눅스 쉘상에서 일괄 변경하는 쉘프로그램 입니다.
요긴하게 썼던 기억이.. ㅎㅎ
 다음글 php2exe (php코딩된걸 exe로 만들어줌) (1)
 이전글 Devtool_v4 (3)

댓글

ci세상 / 2009/08/20 12:00:04 / 추천 0
와우 ~~ 윈도우용으로 찾고 있었던 중인데요^^ 서버에서 하면 좋겠네요 ~~

혹시 ~~ 메타태그도 동시에 UTF-8로 변경해 주려면 고치면 되겠지요?^^
변종원(웅파) / 2009/08/25 17:59:26 / 추천 0
ㅋ 여기도 업로드 프로그램의 버그가...
양승현 / 2009/09/03 16:59:06 / 추천 0
음.. 매타태그는 리눅스에선 find로 한방에 바꿔버립니다. ^^;

find ./ -name "*.php" -exec perl -pi -e 's|EUC-KR|UTF-8|g' {} \;

이렇게요.
Cacti / 2009/10/28 11:19:32 / 추천 0
find . / -name "*.php" | xargs sed -i "s/EUC-KR/UTF-8/g"
메타태그 바꾸는 이런 방법도 있습니다.