본문 바로가기

IT/OS|Network|Script

[Script] bash iconv로 디렉토리 내 파일들 cp949 to utf8변환

728x90

1) 파일 확장자들은 MY_LIST에서 보이는 것처럼 *.h *.c

2) 변환 fail은 stderr로 올라오는 것을 체크해서 처리

#!/bin/bash
TMP_FILE_OUT=/dev/shm/mytmp.out
TMP_FILE_ERR=/dev/shm/mytmp.err
#iconv -f cp949 -t utf-8
get_file_size()
{
  FSIZE=0
  if [ -f $1 ] ; then
    FSIZE=`wc -c $1|awk ' { print $1 } '`
  fi
  return $FSIZE
}
MY_LIST=`ls *.h *.c`
for MY_FILE in $MY_LIST
do
  get_file_size ${MY_FILE}
  SIZE_MY_FILE=$?
  if [ ${SIZE_MY_FILE} -gt 0 ]; then
    iconv -f cp949 -t utf-8 ${MY_FILE} > ${TMP_FILE_OUT} 2>${TMP_FILE_ERR}
    get_file_size ${TMP_FILE_OUT}
    SIZE_OUT_FILE=$?
    get_file_size ${TMP_FILE_ERR}
    SIZE_ERR_FILE=$?
    if [ ${SIZE_OUT_FILE} -gt 0 ] ; then
      if [ ${SIZE_ERR_FILE} -eq 0 ] ; then
        echo "Succ: ${MY_FILE}"
        mv  ${TMP_FILE_OUT} ${MY_FILE}
      else
        echo "Error: ${MY_FILE}"
      fi
    fi
  fi
done

 

728x90