BeyondCompare 不会忽略行尾的差异(DOS/UNIX)

BeyondCompare 不会忽略行尾的差异(DOS/UNIX)

我正在 Windows 10 上使用 BeyondCompare 4 比较两个包含数千个文件的目录。

它们基本相同,但一个从 Windows 导出,另一个从 Linux 导出。唯一的区别是

Windows(DOS)在行末使用 CR/LF,而 Unix 仅使用 LF。(LF 是/表示换行符)

在 Beyond Compare 中,打开文件时我们看到的不同之处在于,一个文件显示“PC”,另一个文件显示“UNIX”(见下图):

在此处输入图片描述

打开文件并关闭后,Beyond Compare 现在将文件视为相同,如果我刷新,它们就不会显得不同。

由于我有数千个文件,并且不想手动打开所有文件,我该如何忽略那些仅在上图中提到的差异的文件?

尝试按“Minor”,但效果不佳。


使用以下脚本

find . -type f -print0 | xargs -0 unix2dos

通过从 UNIX 转换为 DOS 解决了该问题,但我想知道在 Beyond Compare 中如何默认执行此操作,以及是否可行。

答案1

Beyond Compare 的文件夹比较默认比较文件大小和时间戳。

一边是 Windows CRLF,另一边是 Unix/Linux LF,尽管其他文本内容相同,但大小不同。双击文件时,将比较文本内容并发现相等。关闭文本比较时,文件夹比较将使用该比较结果进行更新。

使用与在 Beyond Compare 的文件夹比较中查看文件内容相同的方法比较文件夹比较中的文件:

  1. 点击规则工具栏按钮(裁判图标)。
  2. 前往比较标签。
  3. 查看比较内容
  4. 选择基于规则的比较
  5. 单击“确定”。
  6. 在文件夹比较中,确保视图 > 忽略不重要的差异已打开。

答案2

我正在 Windows 10 上使用 BeyondCompare 4 比较两个包含数千个文件的目录。

它们是相同的,但一个从 Windows 导出,另一个从 Linux 导出

这些文件并不相同,这就是为什么 Beyond Compare 不认为它们相同。(我有并使用 Beyond Compare)。

Windows(DOS)在行末使用 CR/LF,而 Unix 仅使用 LF。(LF 是/表示换行符)

Windows 与 Unix 行尾

DOS 与 Unix 行尾 在 DOS/Windows 计算机上创建的文本文件的行尾与在 Unix/Linux 上创建的文本文件的行尾不同。DOS 使用回车符和换行符(“\r\n”)作为行尾,而 Unix 仅使用换行符(“\n”)。在 Windows 计算机和 Unix 计算机之间传输文件时,您需要小心谨慎,以确保正确转换行尾。

CDF 工作人员已经撰写了一份关于 Unix 和 DOS 文件之间转换的详尽解释

在目录 /u/csc207h/winter/pub/bin 中,您将找到一个名为 dos2unix 的小型 Perl 程序,它将 DOS 行尾转换为 Unix 行尾。您可以将路径设置为包含此目录,以便运行该程序,或者将其复制到您自己的 bin 目录中。以 dos2unix 的身份运行该程序。文件已修改。

重要提示:您必须在 CVS 目录中提交带有 Unix/Linux 文件结尾的文件。如果您仅使用 CVS 在家用计算机和 CDF 之间传输文件,则不必担心行尾问题。但是,您必须在提交程序之前在 CDF 上测试它们。特别是 Shell 程序,如果包含 DOS 行尾,则会以神秘的方式失败。

现在我在 Scooter 论坛上还发现你可以忽略不重要的差异,这确实可能对你有帮助。

忽略不重要的差异。

前面提到的帖子实际上是要求忽略行尾并比较文本,而不管它在哪里断行。

我们完全支持忽略行尾,并“强制”在文件夹比较级别进行二进制比较,而无需双击文件。

以下是一篇可以提供帮助的简短知识库文章: http://www.scootersoftware.com/suppo...ferentthensame

行尾重要性由每个会话/实例控制。您可以从主页 -> 编辑会话默认值(已保存会话列表中的绿色文件夹)文本比较中设置全局默认值。在重要性选项卡中,比较行尾(PC/Mac/Unix)应该已被禁用,这是默认设置。

但是,文件夹比较默认不使用此信息,而是使用属性时间戳/大小进行快速比较。您可以在文件夹比较会话设置中更详细地进行初始扫描,并启用基于规则的比较(与双击相同)或二进制或 CRC 比较。

假如你有任何问题请告知我们。

在此处输入图片描述

答案3

这不应该发生——Beyond Compare 应该默认忽略行尾的差异。

来自 文本比较重要性设置 关于参数的说法 会话 > 会话设置 > 重要性

Beyond Compare 通常会忽略行尾样式的差异,例如 Windows 文本文件中的 CR+LF 与 Unix 文件中的 LF。要逐行查找行尾的差异,请标记比较行尾 (PC/Mac/Unix)复选框。(要检查行尾,请标记视图 > 可见空白 在此处输入图片描述

检查上述文本中指示的设置并验证它们是否正确。

您可能还会遇到此问题,因为您正在比较文件夹而不是文件。

我引用了帖子的结尾 如何忽略 CRLF?

行尾重要性由每个会话/实例控制。您可以从主页 -> 编辑会话默认值(已保存会话列表中的绿色文件夹)文本比较中设置全局默认值。在重要性选项卡中,比较行尾(PC/Mac/Unix)应该已被禁用,这是默认设置。

文件夹比较默认不使用此信息但是,将使用属性时间戳/大小进行比较以进行快速比较。您可以在文件夹比较会话设置中更详细地进行此初始扫描,并启用基于规则的比较(与双击相同)或二进制或 CRC 比较。

我不使用 Beyond Compare,因此无法提供详细信息。您需要检查并验证所有这些设置。

相关内容