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

# 定义检查文件日志输出 参数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换行)