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 查看文件编码并进行批量编码修改的主要内容,如果未能解决你的问题,请参考以下文章

如何批量修改linux 文件编码格式

eclipse实现批量修改文件的编码方式

批量修改数据库表编码

ubuntu18.10 修改MySQL编码为utf-8

Ubuntu 16.04.1下修改MySQL默认编码

.txt文件也有编码么?怎么查看.txt的编码?如何修改?