批量滴给文件添加“BOM”

#!/bin/bash
if [ $# -lt 2 ];then
        echo "用法: $0 <搜索目录> <要查找的文件类型后缀列表>"
        exit 0
fi

fdir=$1
shift
slistf=/tmp/$$slist
touch ${slistf}
outd=/tmp/$$bomout
mkdir ${outd}
cacf=/tmp/$$cac
touch $cacf

for tp in $@
do
        
        for f in $(find ${fdir} -name '*.'${tp})
        do
                echo "${outd}/${f}" > $cacf
                tmpp=$(grep -o '.*/' $cacf)
                if [ ! -d $tmpp ];then
                        mkdir -p $tmpp
                fi
                tmpp=${outd}/$f
                printf '\xef\xbb\xbf' > $tmpp
                cat $f >> $tmpp
        done
done
rm -f $slistf
rm -f $cacf
xdg-open ${outd}

    在公司我用的是ubuntu系统用QtCreator写代码,同事用的M$家的VS做开发。有时候要相互分享一些代码。而微软家的东西特别钟爱某种特别的的编码格式。我这发给他了,他打开了vs就要警告一大堆。于是他就“高级保存选项”->“utf8带签名格式"这样保存一遍。要是文件多了也是蛮烦的。

    到底是啥子签名额?

    我就用xxd命令看了下到底是带签名和不带签名的两个相同的文件哪里不同。哦,带签名的文件头3字节是EF BB BF.

知道哪里不一样了就好说了.虽然网上有不少现成的工具,但是作为一个拧巴的程序,就打算整一个小脚本批量的干一下.自己整的都比较放心呗.

    想想目标一共这么几个:

    能指定搜索某个目录下的文件

    能指定搜索一组特殊后缀的文件

    把转化后的结果拷贝到一个新的目录

    也许在压缩打包一下

    就叫addbom把.用的时候就:

    addbom <要搜索的目录> <要查找的文件的类型的列表>

    比如: add bom /home/kaka/mysrc/ h cpp 

    它就在/home/kaka/mysrc目录下搜寻h和cpp后缀的文件添加上bom拷贝到某个目录.

    就这么在脑袋里面电光火石地yy了一下.大概都明了了.

我是个比较懒的银.只要能满足最基本的功能,就不再考虑什么异常啊,什么什么的了.能用就够

你可能感兴趣的:(shell脚本,bom,utf8)