linux文本格式转换

时间:2023-02-10 22:09:20

dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。
DOS下的文本文件的换行符为\r\n,表示成十六进制就是0D 0A,而Unix下的文本文件换行符为\n,表示成十六进制就是0A。DOS格式的文本文件在Linux上用较低版本的vi打开行尾会显示^M,并且很多命令都无法的处理好这种格式的文件,因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。
使用cat -v查看文件中的非打印字符

语法:

dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]

选项:

-k:保持输出文件的日期不变
-q:安静模式,不提示任何警告信息
-V:查看版本
-c:转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII
-o:写入到源文件
-n:写入到新文件

实例

转换单个或多个文件

最简单的用法是dos2unix直接接一个文件或多个文件

dos2unix file1 file2 file3 ...

批量转换目录下的文件

Linux本身提供了dos2unix和unix2dos这两个命令来实现windows和linux文件的转换,
但是dos2unix和unix2dos本身没有提供递归选项也就是批量修改的方式,因此可以借助xargs命令实现。xargs的命令的作用就是将参数列表转换成小块分段传递给其他命令。

假设需要转换格式的文件所在目录为 public/components

find public/components/ -name "*" | xargs dos2unix

优点:批量转换、工作量小。借助管道符和xargs来实现的批量转换,此方法可以实现其它命令的批量操作(如批量删除等)