当前位置 博文首页 > Shell脚本遍历目录并批量修改文件编码

    Shell脚本遍历目录并批量修改文件编码

    作者:admin 时间:2021-06-24 18:33

    在将windows上的jsp网页移植到linux环境中时,发现一个个的转换编码及修改默认编码类型太慢,写此脚本进行尝试文件遍历~

    好久不写,手生了。

    复制代码 代码如下:

    #!/bin/bash
    #
    #
    SPATH="/root/chengji/WebRoot"
    DPATH="/web"
    # 函数开始部分
    CYCLING(){
      filelist=`ls -1 $SPATH`
    for filename in $filelist ; do
    if [ -f $filename ] ; then 
            echo Filename:$filename
            /usr/bin/iconv -f GBK -t UTF-8  $SPATH/$filename -o  $DPATH/$filename
            #cp -pv $SPATH/$filename  $DPATH/$filename 该句为前期便利效果测试
            sed  -i  -e  's/gb2312/UTF-8/g'  -e 's/GB2312/UTF-8/g'  $DPATH/$filename
        elif [ -d $filename ] ; then
            DPATH=$DPATH/$filename
            mkdir -pv $DPATH
            cd $filename
            SPATH=`pwd`
        # Next for recurse 如果遇到目录进行自我调用。。。实现深层遍历
            CYCLING
        # Next Usag: basename dirname
            DPATH=`dirname $DPATH`
            SPATH=`dirname $SPATH`
            cd $SPATH
    else
            echo "File $SPATH/$filename is not a common file.Please check."
        fi
      done
    }
     # 命令开始部分
    cd $SPATH
    CYCLING
    echo "All Done."

    当然,上面的代码由于使用了函数循环调用,显的很臃肿。下面来一种简单的方法,find一下:

    复制代码 代码如下:

    #/bin/bash
    #Auth: Mo
    #Desc:
    #
    SPATH="/root/chengji"
    DIR=WebRoot
    DPATH="/web"
     find ${DIR}   -type d  -exec mkdir -pv ${DPATH}/{}  \;   
     find ${DIR}  -type f -exec  iconv -f GBK -t UTF-8  {} -o  ${DPATH/{}  \; 
    echo "The file Next Listed is not a common file or directory ,please check."
    find  ${DIR}  ! -type f  -a  ! -type d -ecec  ls -l {} \; 
    find  $DPATH -type f -exec sed  -i  -e  's/gb2312/UTF-8/g'  -e 's/GB2312/UTF-8/g'  {} \;
    echo ' '
    echo "All Done."

    js
    下一篇:没有了