当前位置:  开发笔记 > Android > 正文

Windows换行符的Unix换行符(在Windows上)

如何解决《Windows换行符的Unix换行符(在Windows上)》经验,为你挑选了4个好方法。

有没有人知道Windows中的一种方式(比如Powershell或工具)可以递归目录并将任何unix文件转换为Windows文件.

我对Powershell中至少检测到unix文件的方式非常满意.

对于单个文件来说,这很容易做到这一点,但我追求的是一些可扩展的东西(因此倾向于Powershellish解决方案).



1> JasonMArcher..:

如果您有兴趣,这是纯PowerShell方式.

查找至少有一个UNIX行结束的文件(PowerShell v1):

dir * -inc *.txt | %{ if (gc $_.FullName -delim "`0" | Select-String "[^`r]`n") {$_} }

以下是查找和修改UNIX行结尾到Windows行结尾的方法.需要注意的一件重要事情是,如果末尾没有行结束,则会在文件末尾添加额外的行结尾(\ r \n).如果你真的不想那样,我会发一个如何避免它的例子(它有点复杂).

Get-ChildItem * -Include *.txt | ForEach-Object {
    ## If contains UNIX line endings, replace with Windows line endings
    if (Get-Content $_.FullName -Delimiter "`0" | Select-String "[^`r]`n")
    {
        $content = Get-Content $_.FullName
        $content | Set-Content $_.FullName
    }
}

上面的工作原理是因为PowerShell会自动拆分\n上的内容(如果存在则删除\ r \n),然后在将每个东西(在本例中为一行)写入文件时添加\ r \n.这就是为什么你总是以文件末尾的一行结束.

此外,我编写了上面的代码,以便它只修改它需要的文件.如果您不关心,可以删除if语句.哦,确保只有文件到达ForEach-Object.除此之外,您可以在该管道的开头做任何您想要的过滤.



2> Miserable Va..:

在Cygwin中有dos2unix和unix2dos .


我推荐这种技术,因为unix utils可以更好地维护原始文件编码(UTF-8,ASCII等).我以前在打算保留ASCII文件ASCII时遇到了PS问题.
我使用powershell列出文件,然后将它传递给dos2unix.exe,如下所示:`dir -Recurse -File -Exclude .git | %{dos2unix --u2d --skipbin $ _}`

3> 小智..:

这似乎对我有用.

Get-Content Unix.txt | Out-File Dos.txt


或`Get-Content Unix.txt | 设置内容Dos.txt`

4> soulmerge..:

下载vim,打开你的文件并发布

:se fileformat=dos|up

多个文件的批处理(C:\ tmp中的所有*.txt文件 - 递归):

:args C:\tmp\**\*.txt
:argdo se fileformat=dos|up


这只是我想到的第一件事,它出现在我拥有/管理的每一个盒子上.顺便说一句:你真的建议使用eclipse(85MB)并逐个文件而不是使用vim(8.5MB)并一次性完成吗?
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有