11.1.3. 使用 iconv 转换文件名

这里是一个示例脚步,在同一目录下,将在老的操作系统系统下创建的文件名编码,转换为现代 UTF-8.

  1. #!/bin/sh
  2. ENCDN=iso-8859-1
  3. for x in *;
  4. do
  5. mv "$x" "$(echo "$x" | iconv -f $ENCDN -t utf-8)"
  6. done

$ENCDN“ 变量定义了在老的操作系统下,文件名使用的原始编码,见 表 11.2 “编码值和用法的列表”.

对于更加复杂的情况,请使用适当的编码作为 mount(8) 的选项(参见 第 8.4.6 节 “文件名编码”) 来挂载包含有这样文件名的文件系统(比如说,磁盘上的一个分区),使用 “cp -a“ 命令来拷贝它的整个内容到另外一个使用 UTF-8 挂载的文件系统上。