不同的操作系统,如Linux和Windows,有不同的文本文件格式 彼此不兼容。在使用这些平台编辑和读取文本文件时会出现问题。如果我们想在Linux中使用在Windows或MS-DOS环境中创建或编辑的文本文件,我们需要使用 dos2unix
工具。
安装dos2unix
作为 dos2unix
工具是一个非常简单的工具,我们可以为不同的Linux发行版安装它,如下面所示。
Ubuntu、Debian、Mint、Kali
我们将使用 apt
指挥与控制 dos2unix
安装程序包名称。
$ sudo apt install dos2unix

软呢帽、CentOS、RedHat
我们将使用 dnf
命令如下。
$ sudo dnf install dos2unix

隐藏字符问题
如前所述 有些角色 不用于Linux文本文件,但用于Windows文本文件。
- 在Windows中,行尾由回车’CR’后跟换行符’LF’指定,但在Linux中,只使用换行符’LF’。
- Windows文件的默认编码是UTF-16,但在Linux中使用UTF-8
- 二进制文件将自动跳过
打印给定的文件编码和类型
我们将从列表或打印开始 给定的文件 编码类型和行终止符类型。我们将使用Linux file
提供 这些信息。
$ file a.txt

我们可以看到文件 a.txt
是用 ISO-8859
并拥有 CRLF
或Windows行终止符。
从DOS转换为Unix格式
我们将从一个简单的例子开始,在这里我们将转换在Windows或MS-DOS中创建的文件 环境命名 a.txt
在Linux环境中使用的文件。 a.txt
将转换为相同的文件名。
$ dos2unix a.txt

在与客户核实后 file
命令我们可以看到,它被称为没有CRLF行终止符的文本文件。
相关文章: 什么是磁盘操作系统(DOS)?
指定转换模式
在转换时,有不同的转换模式可供选择 关于转换。我们可以使用以下方法 选项和转换模式。
- `-iso`将从默认代码页转换为Unix拉丁语-1
- `-850`将从DOS CP850转换为Unix Latin-1
- `-1252`将从Windows CP1252转换为Unix UTF-8或Unicode
在本例中,我们将使用 -iso
选项。
$ dos2unix -iso a.txt

我们可以看到在转换过程中提供了详细的信息。
保留旧文件的日期戳
时间戳是文件属性,它包含创建时间、修改时间、访问时间等信息。当将文本文件从DOS格式转换为Linux格式时,这些信息将被更改。我们可以用 -k
选项如下。
$ dos2unix -k a.txt
指定 新文件名
到目前为止,我们已转换文件和替换。我们可以指定一个新的文件名,其中转换后的文件内容将写入这个新文件,而旧文件将保持不变。我们将使用 -o
选项并指定新文件名。
在本例中,我们将创建新转换的文件名 b.txt
.
$ dos2unix -n a.txt b.txt

带find命令的递归转换
如果有很多文件需要转换成Unix或Linux文本文件格式,那么将它们逐个转换是一件很琐碎的工作。我们需要对所有文件执行批量操作。我们可以用 find
命令,该命令将对指定为 txt
.
在本例中,我们将找到用指定的所有文本文件 -name *.txt
在当前工作目录中 .
然后跑 dos2unix
使用 xargs
命令。
$ find . -name "*.txt" | xargs dos2unix