`
wuhuizhong
  • 浏览: 681142 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

shell脚本使用iconv 批量改变文件编码

 
阅读更多

第一个版本:

用法示例:

cd ~/workspace/XXXProject
~/iconv_shell.sh ./ *java

 

#!/bin/bash 
if [ "$#" != "2" ]; then 
    echo "Usage: `basename $0` dir filter" 
    exit 
fi
 
dir=$1 
filter=$2 
echo $1
 
for file in `find $dir -name "$2"`; do 
    echo "$file" 
    iconv -f gbk -t utf8 -o $file $file 
done

另一个版本:

用法和功能:
1.有两个参数,即需要转换的文件和希望转换的编码。
2.使用 iconv 工具转换,并将目标编码名称加入到文件名中以示区别。

#!/bin/bash
#Author:digglife
#Description:Convert the charset of text file.
#version:0.2
#Date:2011/05/12
#To Be Resovled:
#  1.get filename without using $fileExtension varable.

#Get the parameters
file=$1
to_charset=$2

#Get the first character of the $file
first_char=${file:0:1}

#Test if the file exists,break if it doesn't
if [ ! -f "$file" ];then
    echo "$file,No such file or directory"
    exit 1
#If the given $file contains the directory,get the basename of it,and change dir to its directory.
elif [ first_char="/" ];then
    full_filename=$(basename $file)
    cd $(dirname $file)
else
    full_filename=$file
fi

#Split the file extention and filename
file_extension=$(echo $full_filename | sed 's/^.*.//g')
filename=${full_filename%.$file_extension}

#Get the original charset
charset_org=$(file -I $full_filename | sed 's/^.*charset=//g')

#Convert the charset,and change the full filename
iconv -c -f $charset_org -t $to_charset $full_filename > $filename.$to_charset.$file_extension

 

Shell编码知识总结:

  1. 通过${variable:index:index}的方式可以取得String的部分字符,非常方便。上述脚本就用到了这个命令来取得文件名的头文字,以判断是否带有路径。
  2. 文件判断语句中,if [ ! -f $file ]中[的后面和]的前面是有空格的,如果没有则提示错误。这一次也好好地熟悉了一下条件判断语句的写法。以前还以为是else if的,原来可以用elif。
  3. sed用法。主要是sed替代命令的用法,s/re/re/g这种命令结合正则表达式的的确确非常好用。
  4. ##和%%用于文本操作时的用法。要点有二,#从前面删起、%从后面删起;重复利用时删除更长的那个(这个只有举例说明,文字词不达意)
  5. file -I可以用于判断文本编码。
  6. iconv不能生成文件,仅用于标准输出,如果要生成文件,需要利用>输出。
  7. 如果文件路径中含有~(home目录)时,shell会自动将其转换为标准的绝对路径,所以在判断参数1是否带有文件路径时,只需判断第一个字符是否为/,而不用管~。

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    使用iconv批量改变文件编码的shell脚本

    这篇文章主要介绍了编写shell脚本,使用iconv批量改变文件编码的脚本代码,需要的朋友可以参考下。 用法示例: cd ~/workspace/XXXProject ~/iconv_shell.sh ./ *java 好了,直接上代码~~ #!/bin/bash if [ $# != 2...

    shell脚本中使用iconv实现批量文件转码的代码分享

    本文将深入探讨如何利用Shell脚本结合iconv工具实现批量文件的编码转换,这对于处理大量不同编码格式的文件尤为实用。 首先,我们要了解iconv。iconv是一个在多种操作系统中广泛使用的命令行工具,用于在不同的字符...

    linux转化windows文件编码格式脚本

    该脚本使用 Bash shell 脚本语言编写,使用 iconv 工具将文件编码格式从 GB2312 转换为 UTF-8 编码。脚本的主要功能是遍历指定目录下的所有文件,如果文件是 Java 文件(以 .java结尾),则将其编码格式转换为 UTF-8...

    Shell脚本遍历目录并批量修改文件编码

    ### Shell脚本遍历目录并批量修改文件编码 在IT领域中,特别是在处理跨平台文件时,经常会遇到编码格式不一致的问题。例如,从Windows环境移植到Linux环境时,文件编码可能需要从GBK转换为UTF-8。通过编写Shell脚本...

    shell脚本实现ftp上传下载文件功能

    在IT行业中,shell脚本是一种常用的自动化工具,尤其在Linux或Unix系统中,它能够帮助用户执行一系列命令,实现批量处理任务。在这个场景中,shell脚本被用来实现在不同主机间传输文件,并通过FTP(File Transfer ...

    批量转换目录下文件编码的shell脚本代码

    一例批量转换目录下文件编码的shell脚本代码。 需求描述:由于从window转linux过来,很多原来win下的gbk文件需要转换成utf8。 以下脚本仅判断非utf8文件转换成utf8文件,并且默认非utf8文件为gbk,如果文件类型不...

    Shell脚本把文件从GBK转为UTF-8编码

    总结来说,这个Shell脚本通过接收一个文件或目录作为参数,能够有效地将GBK编码的文本文件转换为UTF-8编码。在处理大量文件时,这种自动化的方法大大提高了效率,减少了手动操作的繁琐。需要注意的是,转换过程中...

    shell实现字符编码转换工具分享

    总的来说,这个shell脚本提供了一种简单且实用的方法来批量处理文件的字符编码转换问题,尤其适用于需要在GBK和UTF-8之间频繁切换的场景。通过这个脚本,我们可以避免手动转换大量文件的繁琐过程,提高了工作效率。

    运维常用Linux命令、Shell技巧范例

    以上列举了运维工作中常用的Linux命令以及Shell脚本技巧,涵盖了文件管理、编辑器配置等多个方面,这些命令对于日常维护和问题排查都极为重要。熟悉并掌握这些命令能够极大地提高工作效率,减少故障处理时间。

    跨平台源码转换为 utf8 格式

    例如,使用Unix/Linux shell脚本配合iconv可以一次性处理整个目录下的所有文件。在Windows环境中,可以编写批处理脚本来调用Notepad++的NPPExec插件进行批量转换。 4. **保留编码声明**:在源代码文件的顶部,通常...

    运维常用linux命令shell技巧范例

    在IT运维工作中,熟练掌握Linux命令与Shell脚本技巧对于提高工作效率、确保系统稳定运行至关重要。本文将根据提供的内容介绍一系列常用的Linux命令及其应用场景,帮助读者更好地理解和运用这些命令。 #### 一、文件...

    linux命令大全

    15. **iconv**: 文件编码转换工具,用于处理不同编码的文本文件。 16. **find**: 文件查找工具,可以根据名称、用户、时间等多种条件搜索文件。 17. **convert**(来自ImageMagick): 图像处理命令,可用于批量...

    UNIX常用命令.doc

    55. `iconv`:用于国际代码集转换,处理不同编码的文件。 56. `id`:显示用户ID和组ID,帮助理解用户权限。 57. `ipcrm`:删除消息队列、信号量集或共享内存,释放系统资源。 58. `ipcs`:报告进程间通信设施的...

    VBA利用js繁简转换

    在IT行业中,尤其是在办公自动化和数据处理领域,VBA(Visual Basic for Applications)是一种非常重要...在实践中,你可能还需要考虑错误处理、批量处理以及不同编码格式的兼容性等问题,以确保转换的准确性和稳定性。

    libimobiledevice-Windows-ios-master.zip

    - 自动化脚本:结合shell脚本,可以自动化执行对iOS设备的批量操作,例如同步媒体文件、更新应用等。 综上所述,libimobiledevice-Windows-ios-master.zip为Windows用户提供了一套完整的工具链,使他们能够轻松地...

    鸟哥Linux私房菜

    fuser命令用于显示使用文件或套接字的进程信息。 20. **gcc**:在第二十二章第2.4节中提及。gcc(GNU Compiler Collection)是一套开源编译器集合。 21. **getenforce/getsebool/getfacl**:在第十七章第5.3、...

    常用的Linux命令汇总

    13. **`iconv`**: 转换文件编码。 14. **`dos2unix`**: 将DOS格式的文本文件转换为UNIX格式。 15. **`file`**: 显示文件类型。 16. **`diff`**: 显示两个文件之间的差异。 17. **`vim`**: 强大的文本编辑器。 18. **...

Global site tag (gtag.js) - Google Analytics