在做跨平台开发移植的时候,最常见的问题就是不同操作系统的换行不同(例如,Windows 上是 CRLF,而 Linux 上是 LF,MacOS 以前是 CR,现在也是 LF),如果不注意的话,可能会导致编译的时候报诡异的错误,虽然说有些优秀的文本工具(notepad++, vscode 等)可以自动转换,但是它们都没有提供批量转换的方法,所以一旦遇到有成百上千个的文件需要转换,那么一个个手动去转明显效率低下。虽然网上提到批量转换的文章很多,但是感觉都没有介绍清楚,可能大神们都觉得太简单了吧。。。为了同学们能够和我一样少走弯路,我就把我的转换过程详细记录下来。
一、强大的 Dos2Unix 工具
下载地址为 https://waterlan.home.xs4all.nl/dos2unix.html#UNIX2DOS (可能被墙 =_=b)
以 Windows 为例,我选择红框标注的 zip
下载后解压到你指定的目录,
然后记得在系统环境变量的 Path 中添加它的路径。
二、通过命令行工具进行转换(以 LF -> CRLF 为例)
为了证明我的这些文件原来是 LF 格式的,我随便打开一个文件,如图
通过 win+R 打开命令行工具
然后 cd 到你想要转换的文件夹目录下
执行以下命令行
for /R %G in (*.c *.cc *.h *.mk) do unix2dos "%G" # *.c *.cc *.h *.mk 表示任意匹配这些后缀名的文件
如果出现以下画面,说明程序已经在批量转换了
转换后的结果:
真的很方便有木有~
三、CRLF -> LF
CRLF -> LF 也是类似,只要把命令行改为如下即可
for /R %G in (*.c *.cc *.h *.mk) do dos2unix "%G" # *.c *.cc *.h *.mk 表示任意匹配这些后缀名的文件
四、其他强大的命令
其他功能可以参考以下链接:
https://waterlan.home.xs4all.nl/dos2unix/zh_CN/man1/dos2unix.htm#9(也可能被墙 =_=b)
五、通过 EditPlus 批量转换
操作很简单,进入相应的目录下,然后打开全部文件,如图操作即可
EditPlus 除了可以批量转换换行,还可以批量转换编码,不过可惜的是 EditPlus 是个收费软件,所以还需要搞定破解问题,否则就等忍受 30 天的试用期。