linux下GBK->UTF-8文件编码批量转换脚本
nux命令行下查看看文件的编码
enca文件名
linux文件名编码批量转换
convmv-f源编码-t新编码[选项]文件名
常用参数:
-r递归处理子文件夹
–notest真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
–list显示所有支持的编码
–unescap可以做一下转义,比如把%20变成空格
比如我们有一个utf8编码的文件名,转换成GBK编码,命令如下:
convmv-fUTF-8-tGBK--notestutf8编码的文件名
Linux下批量转换文件内容编码
1.使用enca,例如要把当前目录下的所有文件都转成utf-8
$enca-xutf-8*
2,使用iconv转换
iconv的命令格式如下:
iconv-fencoding-tencodinginputfile
比如将一个UTF-8编码的文件转换成GBK编码
iconv-fGBK-tUTF-8file1-ofile2
mysqlgbk转utf8
linux下GBK->UTF-8文件编码批量转换脚本
-
finddefault-typed-execmkdir-putf/{};
finddefault-typef-execiconv-fGBK-tUTF-8{}-outf/{};
这两行命令将default目录下的文件由GBK编码转换为UTF-8编码,目录结构不变,转码后的文件保存在utf/default目录下。
mysqlgbk转utf8
经过两天的尝试,mysq数据转码终于告一段落
起因:gbk编码,用脚本python处理导入数据的时候,某些汉字乱码,为了根治,决定把数据库转码
环境linux,secretcrt,mysql5.1.14-beta
1.数据库按gbk导出(mysqldump-urootdb_rdm--default-character-setgbk-pdb_rdm.sql)
2.创建为utf8库,如(createdatabasedb_rdm_testDEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;)
3.把一下shell保存执行
DB='db_rdm_test'
sed's/gbk/utf8/g'db_rdm_gbk.sql_bak|iconv-fgb18030-tutf-8>$DB.sql
mysql-uroot--default-character-set=utf8$DB<$DB.sql
说明:find命令,配合-exec参数,可以对查询的文件进行进一步的操作,可以得到很多有用的功能,比如说文件包含特定字符串的查询等,要了解这个功能,最简单直接的就是看find命令帮助,列出
-execcommand;
Executecommand;trueif0statusisreturned.Allfollowingargumentstofindaretakentobeargumentstothecommanduntilanargumentconsistingof#;'isencountered.Thestring{}'isreplacedbythecurrentfilenamebeingprocessedeverywhereitoccursintheargumentstothecommand,notjustinargumentswhereitisalone,asinsomeversionsoffind.Bothoftheseconstructionsmightneedtobeescaped(witha\')orquotedtoprotectthemfromexpansionbytheshell.Thecommandisexecutedinthestartingdirectory.
其实只要读懂这段话就理解了
废话少说,这里简单说明一下
-exec参数后面跟的是command命令,注意点如下:
command命令的终止,使用';'(分号)来判定,在后面必须有一个';'
'{}',使用{}来表示文件名,也就是find前面处理过程中过滤出来的文件,用于command命令进行处理
特别强调,对于不同的系统,直接使用分号可能会有不同的意义,使用转义符'\'在分号前明确说明,对于前面我们遇到的问题,主要就是这个原因引起的!
举例:
1.查询所有保护字符串“Hello”的文件
find/-execgrep"Hello"{}\;
2.删除所有临时文件
find/-name"*.tmp"-execrm-f{}\;