我有一个 DOS 文件,需要将其转换为支持 Linux 的格式。
这该怎么做呢?
尝试使用 flip。但出现错误:
PROJECT.TXT:二进制文件,未转换
答案1
我首先要询问您的系统它被识别为哪种类型的文件,file PROJECT.TXT
即确保它被识别为文本或其他内容。
guiverc@d960-ubu2:~$ file lshw_dx6120.txt
lshw_dx6120.txt: ASCII text
您的结果是它响应了数据。
这个结果对我来说意味着它不是文本,你需要仔细阅读文件并找出它是什么类型的数据文件
- 某些程序使用的 TXT 变体,例如 RTF
- 文件的格式可以检测吗?通常
- 标题记录
- 后面跟着无数个固定的字段?
- 或者带有标记的可变长度字段?
- 任何索引
数据文件不是操作系统或者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 dos2unix
和man file
。