2

我有一个由许多扩展组成的项目。这些扩展使用所有 3 种行尾类型。但是服务器只能与 2 一起使用。

我有一个可以更改打开文件中的行尾的编辑器,但我需要一些可以进行批量转换的应用程序,因为它大约有 10 000 个文件。

有任何想法吗?

谢谢!

4

1 回答 1

2

这可以通过例如文本编辑器UltraEdit来完成。

  1. 单击菜单Search on Replace in Files
  2. 输入为搜索字符串\r?\n|\r
  3. 输入作为替换字符串\r\n将所有文件中的所有行结尾转换为 DOS/Windows 或仅\n用于 Unix 行结尾。
  4. 如果尚未选择,请选择列出的文件选项。
  5. In files/types输入字符串*.*或只是*或适合仅匹配文本文件并排除二进制文件的任何内容。多个文件扩展名也可以通过用分号分隔来指定*.txt;*.htm?;*.php
  6. 使用按钮...选择包含要更改的子目录和文件的父目录。
  7. 单击高级按钮或带有齿轮图标的按钮以打开高级选项。
  8. 检查选项Search subdirectories
  9. 检查选项正则表达式并选择正则表达式引擎Perl
  10. 如果文本文件以 UTF-16 little endian 或 UTF-16 big endian 编码,请选中使用编码选项并选择编码1200 (UTF-16 LE) 或1201 (UTF-16 BE)。对于所有其他编码,如 UTF-8 或 ANSI,编码选项不需要用于文件中的此替换。
  11. 现在使用按钮Replace all运行替换。

Perl 正则表达式搜索字符串\r?\n|\r匹配一个回车和换行对 (CRLF - DOS/Windows),或者只是一个换行 (LF - Unix),或者只是一个回车 (CR - Mac)。

在运行 Perl 正则表达式 Replace All 后,所有匹配的文件都会有一个新的修改日期,因为搜索表达式会找到所有 3 种行尾类型。

但也可以使用作为搜索字符串\r\n|\r\n替换字符串仅将所有 DOS/Mac 文件转换为 Unix。仅包含换行符并因此已经是 Unix 文件的文件不会使用此搜索表达式进行修改。

(?<!\r)\n|\r(?!\n)用作搜索字符串和替换字符串以仅将\r\n所有 Unix/Mac 文件转换为 DOS/Windows。\r\n此搜索表达式不会修改已包含的文件。

于 2014-06-19T19:39:57.070 回答