在 DOS 和 Linux 格式之间转换文件

在 DOS 和 Linux 格式之间转换文件

我有一个 DOS 文件,需要将其转换为支持 Linux 的格式。

这该怎么做呢?

尝试使用 flip。但出现错误:

PROJECT.TXT:二进制文件,未转换

答案1

我首先要询问您的系统它被识别为哪种类型的文件,file PROJECT.TXT即确保它被识别为文本或其他内容。

guiverc@d960-ubu2:~$   file lshw_dx6120.txt 
lshw_dx6120.txt: ASCII text

您的结果是它响应了数据。

这个结果对我来说意味着它不是文本,你需要仔细阅读文件并找出它是什么类型的数据文件

  • 某些程序使用的 TXT 变体,例如 RTF
  • 文件的格式可以检测吗?通常
    1. 标题记录
    2. 后面跟着无数个固定的字段?
    3. 或者带有标记的可变长度字段?
    4. 任何索引

数据文件不是操作系统或者Linux具体;但是特定于程序

我可能会写一个转换程序perl站在你的角度,但首先需要检测格式。我不认为它是一个 DOS 文件(对我来说,DOS 代表带有特定 EOL 标记的文本;它是一个特定的但未指定程序数据文件)。

如果是文本,我会dos2unix像@waltinator 的答案那样使用。

我发现了一个非常古老的(如果 1987 年是旧的)DOS文件

guiverc@d960-ubu2:~$   ls -lh /de2900/lan/ws2000/README.TXT 
-rwxrwxrwx 1 guiverc 600 86K Nov 20  1987 /de2900/lan/ws2000/README.TXT
guiverc@d960-ubu2:~$   file /de2900/lan/ws2000/*.TXT
/de2900/lan/ws2000/README.TXT: data

查看文件(使用view)时,它看起来像是文本,仅缺少 EOL(行尾)字符,仅使用 ^M(CR)。我会dos2unix在该文件上使用并期望获得良好的结果,但我将做什么在很大程度上取决于我在文件中看到的内容,以及我对我认为它是哪种格式文件的解释。(如果失败了,我总是可以用别的方法再试一次;因为我只会转换为一个新文件!

我将旧的 README.TXT 文件复制到 ~,然后尝试dos2unix,结果报告了错误的 ^B 字符

guiverc@d960-ubu2:~$   dos2unix README.TXT 
dos2unix: Binary symbol 0x02 found at line 2
dos2unix: Skipping binary file README.TXT

我强迫

guiverc@d960-ubu2:~$   dos2unix -f README.TXT 
dos2unix: converting file README.TXT to Unix format...

仔细检查后发现,我的 README.TXT 文件是不是文本,但 wordstar 2000 文件带有文本扩展名。报告file它是数据,并且是正确的。dos2unix唯一转换的换行符并不是唯一的问题。

答案2

如果是文本文件,可以使用命令

dos2unix /path/to/file

如果尚未安装,sudo apt install dos2unix将会安装它。

如果它是 .EXE、数据库或其他 Windows 特定的二进制格式,那你就倒霉了。

使用file命令查看您拥有什么类型的文件。

man dos2unixman file

相关内容