一次更改多个文件的EOL


100

Notepad ++(或什至使用其他工具)中是否有任何方法可以一次性更改在多个文件上自动结束的行?

即,将Windows EOL(CRLF)和UNIX EOL(LF)文件的混合转换为全部Windows EOL(CRLF


1
如果记事本+ +是不坚定的要求,这里的信息可能是相关的:stackoverflow.com/questions/3110031/...
鲁本

Answers:


102

替换”对话框可以处理诸如EOL之类的扩展字符。只需将“搜索模式”更改为“扩展”,就可以使用EOL(在Windows中为\ r \ n或在Unix中为\ n),制表符(\ t)等。

您也可以使用对话框的“在文件中查找”选项卡在多个文件中进行替换。

屏幕截图


14
请注意,如果您的所有文件还不 Unix风格,则此解决方案将无法使用。由于替换\n\r\n还将转换\r\n\r\r\n
Kirk Woll

-1而不更改Edit> EOL转换(请参见屏幕快照状态栏中的Dos \ Windows),按ENTER键将插入错误的
EOL-

42
将\ n替换为\ r \ n。然后将\ r \ r \ n替换为\ r \ n。瞧!
dev_row

2
为什么您的屏幕截图示例显示\tFind what?制表符与更改行尾没有关系,对吗?
trejder 2014年

1
很棒...在notepad ++编辑器中可以完美工作...它可以节省大量的精力,我们将通过手动更改来花费
aniruddha

91

我有Notepad ++ 6.1.2。
在“编辑”菜单中,您可以进行完全所需的“ EOL转换”。


24
以文件为基础的文件,不能应用于整个文件集。
fduff 2012年

10
您阅读问题标题了吗?您看到“在多个文件上更改EOL ”部分吗?
Sk8erPeter 2013年

2
您将打开多个文件,依次执行一个以上的文件。就像他说的那样,“一口气”最初并不存在。
gparent,

7
实际上,答案对我来说非常有用,因为我需要在单个文件中更改EOL,而且我不知道如何。
DiegoDD

5
有用的答案,因为这首先出现在Google中
Matthew Lock

69

使用“查找文件”功能(Ctrl + Shift + F)。将左下方的搜索模式更改为“正则表达式”。

在“查找内容”框中,使用以下模式:

(?<!\r)\n

用。。。来代替:

\r\n

选择目录并指定任何文件类型过滤器。如果需要,请选中“在所有子文件夹中”。点击“替换为文件”。

这是用\ r \ n替换当前未在回车符(\ r)之前的任何换行符(\ n)。因此,它将与Windows样式的行尾不匹配。

在此处输入图片说明


1
您能否解释一下(?<!\r)\n,特别是第一?<!部分,谢谢!
user1032613

2
(?<! )是一个负面的回望。如果没有前缀,则表示匹配。在这种情况下,它会进行检查,\r并且只有在\n没有\r之前才匹配。
rtpHarry

是的 我同意rtpHarry。这是我回答的这一部分:“ 当前在回车符(\ r)之前的任何换行符(\ n )”。
肖恩

1
最复杂的解决方案!
Philipp Michalski

4
从技术上讲,这是此页面上最精确和完整的答案。
dotNET

8

使用正则表达式替换全部

(\r?\n)|(\r\n?)

\r\n

这会将所有可能的行结束模式(单个\ r,\ n或\ r \ n)匹配回\ r \ n(对于Windows)。

要对多个文件进行操作,请执行以下任一操作:

  • 在“替换”选项卡中使用“在所有打开的文档中全部替换”。您必须首先将所有文件拖放到Notepad ++中。最好可以控制要操作的文件,但是如果有数百或数千个文件,则速度可能会很慢。
  • 通过选择的文件过滤器(例如,在一个指定目录下的* .cpp * .cs)在“查找文件”选项卡中的“替换文件”。

最佳答案,因为它适用于所有行尾样式。谢谢!
yoyo

这是最好,最简单的答案!
user1447420


1

通过讨论找到了这个解决方案:

您还可以通过“设置”->“首选项”->“新文档/默认目录”在notepad ++中设置默认EOL,然后在“格式”框下选择“ Unix / OSX”。

注意:始终可以通过命令行使用带外选项:

unix2dos *.cmd
dos2unix *.sh

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.