用shell批量编码转换

简介: -------------------------------------文件内容转换:iconv-------------------------------------- 通常,从其他平台拷贝过来(Linux)的文件,比如mac或win,打开后都是有编码错误的,尤其是中文编码。

-------------------------------------文件内容转换:iconv--------------------------------------

通常,从其他平台拷贝过来(Linux)的文件,比如mac或win,打开后都是有编码错误的,尤其是中文编码。

这里主要是纯文本文件,pdf或者office文件不谈,他们只存在文件名的乱码,不存在文件内容的乱码(因为他门本来就没有编码)。 

造成的原因很简单,因为前两个系统上的文本文件都是默认gbk编码格式的,gbk是个主要为中文字体服务的编码,其中也包含英文字母和数字,因此对于中国用户来说,gbk编码就能写一切的文本了。

但是Linux平台世界统一utf8,这就麻烦了,Linux的文本编辑器或查看器都默认用utf8打开文本文件,并且午饭判断文件的原编码方式!!!(这点不懂的留言)

iconv命令

iconv命令是个很方便的文件编码转换命令:

Usage: iconv [OPTION...] [FILE...]

 主要的用法参数:
  -f, --from-code=NAME       encoding of original text
  -t, --to-code=NAME         encoding for output

所以通常-f是gbk,-t是utf8

输出的话,既可以--output也可以输出重定向‘>’到文件

但是,想要批量的修改文件编码,结合find命令和他的-exec选项是个不错的选择:

比如:find . -type f  -exec iconv {} -f gbk -t utf8 --output ./new/{} \;

就是将目录下的所有文件转化成utf8复制到新的目录下。

--------------------------------------文件名转换------------------------------------------

但是,如果想解决文件名乱码的问题(注意不是文件内容而是文件名),需要另一条命令:convmv

  从linux往windows拷贝文件或者从windows往Linux拷贝文件,有时会出现中文文件名乱码的情况,出现这种问题的原因是因为,windows的文件名 中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致,所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码。
    在Linux中专门提供了一种工具convmv进行文件名编码的转换,可以将文件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。

    1、先看一下你的系统上是否安装了convmv,如果没安装的话在终端输入下面的命令安装:
       sudo yum -y install convmv

    2、下面看一下convmv的具体用法:
       convmv -f 源编码 -t 新编码 [选项] 文件名
       常用参数:
          -r 递归处理子文件夹
          --notest 真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
          --list 显示所有支持的编码
          --unescap 可以做一下转义,比如把%20变成空格
    比如我们有一个utf8编码的文件名,转换成GBK编码,命令如下:
    convmv -f UTF-8 -t GBK --notest utf8编码的文件名

    这样转换以后"utf8编码的文件名"会被转换成GBK编码(只是文件名编码的转换,文件内容不会发生变化)



目录
相关文章
|
2月前
|
存储 Shell Linux
【Shell 命令集合 备份压缩 】Linux 解码uuencode编码的文件 uudecode 命令 使用指南
【Shell 命令集合 备份压缩 】Linux 解码uuencode编码的文件 uudecode 命令 使用指南
33 0
如何使用shell脚本在服务器中运行cdo命令进行批量合并、插值、求日均、月均等
如何使用shell脚本在服务器中运行cdo命令进行批量合并、插值、求日均、月均等
|
Shell
SHELL下把一个文件附加到另外一个文件,注意编码问题
SHELL下把一个文件附加到另外一个文件,注意编码问题
111 0
|
Shell 数据安全/隐私保护
shell脚本批量推公钥及修改随机密码
shell脚本批量推公钥及修改随机密码
71 0
|
Java Shell 程序员
Power Shell 脚本——基于curl自动批量获取FTP服务器上的日志文件
Power Shell 脚本——基于curl自动批量获取FTP服务器上的日志文件
241 0
Power Shell 脚本——基于curl自动批量获取FTP服务器上的日志文件
|
Shell
《懒人Shell脚本》之九——批量格式转换脚本实现
1、需求:文档格式转换批量脚本实现。 技术点1:文档分散在同一路径下。 技术点2:显示转换进度。 技术点3:每个转换输出到文档同名的指定文件夹下。 前提:单个格式转换已经验证ok。
301 0
|
SQL 存储 关系型数据库
《懒人Shell脚本》之六——一键构造待采集批量sql语句
1、需求 采集任务构造入库。实现200多个网站的标题、时间、内容等信息的采集信息配置,并插入mysql中
181 0
《懒人Shell脚本》之六——一键构造待采集批量sql语句
|
Shell 数据安全/隐私保护
使用 shell 脚本批量创建用户详解资料
for循环创建用户,md5sum 加密
302 0
|
人工智能 网络协议 Shell
用 shell 脚本修改网卡配置信息批量写入IP地址
使用数组和for循环将IP地址进行批量修改
1374 0
|
Linux Shell Windows
Linux Shell脚本实现批量PING测试
Linux Shell脚本实现批量PING测试
1704 0
Linux Shell脚本实现批量PING测试