我正在 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 的文件夹比较中查看文件内容相同的方法比较文件夹比较中的文件:
- 点击规则工具栏按钮(裁判图标)。
- 前往比较标签。
- 查看比较内容。
- 选择基于规则的比较。
- 单击“确定”。
- 在文件夹比较中,确保视图 > 忽略不重要的差异已打开。
答案2
我正在 Windows 10 上使用 BeyondCompare 4 比较两个包含数千个文件的目录。
它们是相同的,但一个从 Windows 导出,另一个从 Linux 导出
这些文件并不相同,这就是为什么 Beyond Compare 不认为它们相同。(我有并使用 Beyond Compare)。
Windows(DOS)在行末使用 CR/LF,而 Unix 仅使用 LF。(LF 是/表示换行符)
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,因此无法提供详细信息。您需要检查并验证所有这些设置。