跳转到主要内容

LINUX下批量转换一个目录下所有文件编码为UTF-8编码

已经对文件做了判断,如果已是UTF-8的文件跳过

代码存成 toutf8.sh   执行 ./toutf8.sh 目录名

#!/bin/bash

function encode()
{
  local temp=`iconv -f gb18030 $1 1>/dev/null 2>/dev/null && echo 'true'`;
  if [ "$temp" = 'true' ]; then
		iconv -f gb18030 -t utf-8 "$1" > test
		cat test > "$1";
  fi;
}

function walk()
{
  for file in `ls $1`
  do
    local path=$1"/"$file
    if [ -d $path ]
     then
      echo "DIR $path"
      walk $path
    else
      echo "FILE $path"
      encode $path
    fi
  done
}

if [ $# -ne 1 ]
then
  echo "USAGE: $0 TOP_DIR"
else
  walk $1
fi