美文网首页
遍历指定目录所有文件并根据后缀检查文件格式是u8或win换行

遍历指定目录所有文件并根据后缀检查文件格式是u8或win换行

作者: 云之君兮鹏 | 来源:发表于2021-04-19 01:47 被阅读0次
    # 定义检查文件日志输出 参数1:日志内容 
    print_log()
    {
      echo -e `date +%F\ %T` : ${0##*/} : "${1}" #
    }
    
    get_all_file_from_dir(){
      local father_dir_name=$1
      for child_file in `ls ${father_dir_name}`
      do
        local child_file_path=${father_dir_name}/${child_file}
        if [ -d ${child_file_path} ] ;then
          #print_log "子目录是文件夹继续遍历子文件:[${1}/${child_file}]"
          get_all_file_from_dir ${child_file_path}
        else
        # 判断文件后缀
        #print_log "文件后缀:[${child_file_path##*.}]"  ## 就是用.分割取最后一个
        #print_log "子目录是文件,可进行文件处理了:[${child_file_path}]"
          if ! [[ ${check_file_suffix} =~ ${child_file_path##*.} ]] ;then   ## [[]] 不会发生单词分割,其他基本通用
            print_log "[INFO:]无需检查此文件,跳出本次循环,文件名[${child_file_path}]" 
            continue
          fi
          if [ ` file -b ${child_file_path} | grep -iE "UTF-8|ASCII" | wc -l` = "1"  ] ;then 
            print_log "[INFO:]文件是UTF-8或者ASCII格式。文件名[${child_file_path}]" 
          else 
            print_log "[WARRING:]文件不是UTF-8或者ASCII格式。文件名[${child_file_path}]" 
          fi
          if [ ` file -b ${child_file_path} | grep "CRLF" | wc -l` = "1"  ] ;then 
            print_log "[ERROR:]文件换行符号为Win系统,请马上修改!文件名[${child_file_path}]" 
          fi 
              
        fi    
      done
    }
    
    check_file_suffix='sh'
    get_all_file_from_dir $path_name
    

    相关文章

      网友评论

          本文标题:遍历指定目录所有文件并根据后缀检查文件格式是u8或win换行

          本文链接:https://www.haomeiwen.com/subject/xevblltx.html