Linux 文件名编码批量转换工具convmv

最近在弄服务器迁移 遇到一个问题就是服务器上好多中文文件名的文件。以前服务器的管理员不知道是基于什么目的把CentOS默认的字符编码改成GB2312的了 新迁移的Debian是UTF-8的 所以RSYNC过来全部是乱码。想起Ubuntu早期的时候也有这样的windows文件名兼容性问题 挂载的windows分区上的文件中文名都是乱码。当然这是挂载的时候的参数问题,和这里的情况不一样。
不过那时很早之前的事情了。
这里用到了一个工具 叫convmv 这玩意在源里面就有 用法也非常简单

convmv -f 源编码 -t 新编码 [选项] 文件名

常用参数:
-r 递归处理子文件夹
--notest 真正进行操作,在默认情况下是不对文件进行真实操作的,而只是试验。
--list 显示所有支持的编码
--unescap 可以做一下转义,比如把%20变成空格
--upper 全大写
--lower 全小写

所以
我要的就是这样

[bash]convmv -f GBK -t UTF-8 --notest -r *[/bash]

问题就解决啦

不要在NTFS和FAT文件系统中使用此命令,否则可能产生意外结果,如果你挂载出来的NTFS和FAT分区是乱码 那基本上是因为你参数的问题。
如果要在Linux中正确的显示NTFS和 FAT的中文件名,具体方法查看一下mount的man手册查询相关参数。

Author Info :
  • From:Linux 文件名编码批量转换工具convmv
  • URL:https://blog.ihipop.com/2011/03/2175.html
  • Please Reserve This Link,Thanks!
  • 发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注