ubuntu 查看文件编码并进行批量编码修改
Posted 洪豆豆的记录
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu 查看文件编码并进行批量编码修改相关的知识,希望对你有一定的参考价值。
由于windows下默认文件编码为gbk或者是gb2312,所以将windows下面的文件移到linux下时,常常会出现乱码的现象。
使用enca工具可以进行文件编码的查看。
ubuntu下enca的安装命令:
1 sudo apt-get install enca 2 3 4 enca查看文件 5 6 enca -L zh_CN file 查看文件编码 7 8 enca -L zh_CN -x UTF-8 file 更改文件编码 9 10 enca -L zh_CN -x UTF-8 < file1 > file2 不想覆盖原文件
下面是一个脚本,批量更改文件编码 注:文件名及文件目录没有空格时有效.可查看上一篇文件批量重命名,更改后再使用此脚本更改文件编码.
1 #!/bin/bash 2 #将文件编码更改为UTF-8 3 #用法 4 #1. 将文件命名为set_encoding.sh 5 #2. chmod +x set_encoding.sh 6 #3. ./set_encoding.sh 7 #4. 输入目录名称 8 #5. 输入是否递归更改 9 #$1表示是否要递归修改文件编码 10 function change_file_encoing(){ 11 for file in $(ls -h|awk \'{print $0}\') 12 do 13 if [[ -d "$file" && $1 = y ]];then 14 cd $file 15 echo $file 16 change_file_encoing $1 17 cd .. 18 elif [[ -f "$file" ]];then 19 echo $file 20 enca -L zh_CN -x UTF-8 $file 21 fi; 22 done; 23 #ecna -L zh_CN file UTF-8 24 } 25 26 read -p "please enter the dir path:" path #读取目录路径 27 if [ ! -x "$path" ]; #判断目录是否存在且是否具有执行权限 28 then 29 echo "dir path not exists" 30 else 31 read -p "please enter if you want to recursive?y/n:" recur #是否递归 32 fi 33 if [ $recur = "y" ]; 34 then 35 cd $path 36 change_file_encoing "y" #递归修改文件编码 37 else 38 cd $path 39 change_file_encoing "n" #非递归修改 40 fi
涉及到部分shell,补充如下:
字符连接:
1 str1=$name$url #中间不能有空格 2 str2="$name $url" #如果被双引号包围,那么中间可以有空格 3 str3=$name": "$url #中间可以出现别的字符串 4 str4="$name: $url" #这样写也可以 5 str5="${name}Script: ${url}index.html" #这个时候需要给变量名加上大括号
Awk主要是用于对文本文件进行处理,通常是逐行处理,其语法参数格式为:
AWK常用参数、变量、函数详解如下:
1 awk \'pattern + {action}\' file
(1) AWK基本语法参数详解:
1 单引号\'\'是为了和shell命令区分开; 2 大括号{ }表示一个命令分组; 3 pattern是一个过滤器,表示匹配pattern条件的行才进行Action处理; 4 action是处理动作,常见动作为Print; 5 使用#作为注释,pattern和action可以只有其一,但不能两者都没有。
(2) AWK内置变量详解:
1 FS 分隔符,默认是空格; 2 OFS 输出分隔符; 3 NR 当前行数,从1开始; 4 NF 当前记录字段个数; 5 $0 当前记录; 6 $1~$n 当前记录第n个字段(列)。
(3)bc运算:
用于浮点数计算输出。通过管道使用。
1 tatal=$(echo "34/15" | bc)
以上是关于ubuntu 查看文件编码并进行批量编码修改的主要内容,如果未能解决你的问题,请参考以下文章