将linux下乱码的文件名转为linux的系统编码显示的文件名

带中文名称的文件传输到linux下面,往往会显示为乱码,这个是由于windows和linux的编码不同的原因
本文通过对文件名称重新编码解决乱码的问题
大概思路:
  得到乱码显示的文件列表数组
  使用gbk进行编码成字节码,再用utf8来查看,得到非乱码的文件列表数组
  用得到的非乱码的文件名来替换乱码的文件,
  通过以上步骤即可完成乱码文件名的修复
  
具体代码:

#!/usr/bin/env bash
#需要两个括号哦
files=($(ls))  
#需要两个括号哦,用gbk的编码来显示utf8,gbk是window下编码的
renames=($(ls | iconv -fGBK -tUTF8))
# ${!files[@]} 为数组的下标集合对象   0  1  2  3  4  
for i in "${!files[@]}"; do
echo "${files[i]} --> ${renames[i]}"
done
echo -n "Are you sure?[y/n]"
read ok
case $ok in
y | Y | yes)
for i in "${!files[@]}"; do
  #改变文件名称
mv "${files[i]}" "${renames[i]}"
done
echo Ok, bye
;;
*)
echo Bye
;;
esac
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章