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

时间:2024-07-04 15:03:50

有时候我们的文件可能不需要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