Windows 下 使用 GitBash 批量转换文本文件编码及批量添加文本行

本文介绍如何使用GitBash、find、iconv、sed等命令批量转换文本文件编码,并在特定文件类型的第一行添加指定内容。通过for循环、find命令筛选文件、iconv进行编码转换、sed实现内容插入,最后使用mv完成文件重命名。同时提供文本内容替换的方法,以及使用notepad++的查找替换功能进行多文件操作。

GitBash 采用的是 MinGW,而 MinGW 又是从 Cygwin 基础上发展而来的。

GitBash 包含了 Linux 下常用的命令,这里我们要用到 find, iconv, sed 这三个。


1. 批量转换文本文件编码

for i in `find ./ -type f -regex ".*\.js\|.*\.css"` ; do `iconv -f gbk -t utf-8 $i > ${i}.tmp` && mv ${i}.tmp $i ; done


搜索当前目录下所有的 js, css 文件(包括子目录),将文件的编码由 gbk 改为 utf-8


2. 批量添加文本行

$ for i in `find ./ -type f -name "*.asp"` ; do `sed '1i<%@ CodePage=65001 Language="VBScript" %>' $i > ${i}.tmp && mv ${i}.tmp $i` ; done

搜索当前目录下所有的 asp 文件(包括子目录),在文件的第一行前添加新行,内容为”<%@ CodePage=65001 Language="VBScript" %>“


3. 说明

  3.1 for 语句

     for i in 命令1 ; do 命令2 ; done

     命令1执行后输出到控制台的文本,被 for 语句进行逐行取出,存为变量 i,再交由命令2 进行执行,实现一个遍历循环。

    如果子命令比较复杂,会影响 shell 对其进行解析,如将命令1 中的部分参数当作 for 命令的参数,造成错误。这时可以在命令两边加上 一对 ``(这个字符在数字1键的左边,通常很少被使用)来进行界定;当然,如果命令语句比较简单,也可以不加。

  3.2 find 语句

    find 路径 参数

    这里的路径是当前工作目录:./,参数用了三个: 

    -type f 

    表示中搜索普通文件;

    -name 文件名(可以使用通配符)

    表示搜索什么文件;

    -regex 正则表达式

    这里用正则表达式来进行文件名匹配。 ".*\.js\|.*\.css",这里的 “\” 是转义符。".*" 表示任意多个字符,"\.js"表示后缀名为 .js,"\|" 这是或的意思,这里就是搜索后缀名为 js 或 css 的文件。

  3.3 iconv 语句

    iconv -f 源编码 -t 目标编码 文件名

    所以,上面的命令就是将 文件 $i 从 gbk 编码转为 utf-8 编码。

  3.4 sed 语句

    sed ’指令语句‘ 文件名

    这里,关键的是指令语句,1iXXXXX 的意思是在第 1 行前面插入新行,内容是紧跟随后的文本。更多指令查看命令手册。

  3.5 mv 语句

    这是文件重命名,不作详述。

  3.6 > 管道符 及 && 操作符

    前者是将标准输出转向到其它设备,这里是指向一个文件。因为 iconv 和 sed 命令都是将内容直接输出的屏幕上的(标准输出设备),所以用 > 来将输出转向到文件,这样就会创建新文件,以 tmp 为后缀,产生一个临时文件,再用 mv 命令覆盖到原文件名去。

    后者是逻辑操作符,通常用来在一条语句中执行两条命令,&& 是与操作,也就是说,只有前条执行没有出错,才会执行后条语句。


4. 要进行文本内容替换,可以用 sed 命令,另外也可以用 notepad++ 的查找替换功能,支持多文件查找替换。按 ctrl + F,选择 Find in files,也支持正则表达式。


---Over---

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值