一个批量移除BOM头的bash脚本

有时候我们的文件可能不需要BOM头,例如:我们公司的SVN服务器提供的代码都UTF8编码保存(不能有BOM头)否则代码提交不上去。

文件很多的时候就需要批量操作。

 

脚本使用方法:remove-bom.sh filePath|dirPath

参数可传文件路径或目录路径。具体代码如下:

#!/usr/bin/env bash

# @author frank
# @email frank@mondol.info
# @created 2016-09-01
#
# Usage: remove-bom.sh filePath|dirPath

removeBomByFile() {
    bomFile=`grep -I -l $'^\xEF\xBB\xBF' $1`
    if [ x$1 = x$bomFile ]; then
        # has BOM
        sed -i 's/\xEF\xBB\xBF//' $1
        echo BOM removed by file: $1
    fi
}

if [ -d $1 ]; then
    for filePath in `find $1 -type f | grep -vE "/\.[^/]+/"`
    do
        # grep exclude hide files
        removeBomByFile $filePath
    done
elif [ -e $1 ]; then
    removeBomByFile $1
else
    echo $1 is not a file or directory
fi

 

posted on 2016-09-01 15:13  Frank.Cui  阅读(870)  评论(0编辑  收藏  举报