如何将文件夹中的所有文件转换为不同的行尾?(在 Windows 上)

如何将文件夹中的所有文件转换为不同的行尾?(在 Windows 上)

如何将文件夹中的所有文件转换为不同的行尾(Linux 或 Mac)?我正在使用 Windows。

现在我的方法是使用 Winscp 复制到 Linux 机器,然后在文件夹上递归运行 dos2unix。

答案1

在 Cygwin 中安装了 Cygwin 和 Dos2unix(如果有的话,您也可以将 Dos2unix 与 Powershell 一起使用。)

find . -type f -exec dos2unix {} \;

命令突破:

  • .- 当前目录
  • -type f- 仅限文件
  • -exec- 执行紧接着的命令
  • dos2unix- 将 Windows 行尾转换为 Unix 行尾的命令。
  • {}- 表示返回的每个结果find . -type f
  • \;- 终止命令。

另外,如果您只想执行特定的文件模式,您可以执行以下操作:

find . -name "*.java" -type f -exec dos2unix {} \;
  • -name "*.java"- 仅以 结尾的文件.java

答案2

您可以安装git bash而不是 Windows 上的 cygwin32(或类似程序)。它在模拟模式下附带几个类似 unix 的命令(例如,finddos2unix等)bash。安装后,将文件从 Windows 转换为 Unix 文件结尾应该很容易。

假设你有文件(以以下后缀结尾.java)位于名为源码并且您想将它们的结尾从 Windows 转换为 Unix 结尾。

  1. 定位源码在 Windows 资源管理器中。
  2. 右键单击该文件夹并从 Windows 上下文菜单中打开 Git Bash。
  3. 跑步:find . -name "*.java" -exec dos2unix {} \;

就是这样!

答案3

我之所以回复,是因为所有这些回复都很困难,而且很老套。我们已经到了 2023 年,兄弟。下载记事本 ++ 并\r\n\n 这个示例替换所有内容...

在此处输入图片描述

答案4

您对使用 dos2unix 和 unix2dos 的回答非常好。

根据您的回答,这是另一种方法。

您可以使用 Gnuwin32,但有趣的是,包含命令的 Gnuwin32 包是 Cygutilshttp://gnuwin32.sourceforge.net/packages/cygutils.htm 这样,您将在 C:\Program Files....\GnuWin32\bin 中获得 unix2dos.exe 和 dos2unix.exe,并将其添加到您的 PATH 中。

C:\somedir>dir<ENTER>
 Volume in drive C has no label.
 Volume Serial Number is DC46-3C68

 Directory of C:\somedir

05/23/2014  01:10 AM    <DIR>          .
05/23/2014  01:10 AM    <DIR>          ..
05/23/2014  01:10 AM                 4 file1
               1 File(s)              4 bytes
               3 Dir(s)  196,129,951,744 bytes free

Do this command to go from dos2unix
C:\somedir>for %f in (*) do dos2unix %f <ENTER>

C:\somedir>dos2unix file1 <-- This runs automatically from you doing the above command
file1: done.

And do this command to go from unix2dos
C:\somedir>for %f in (*) do unix2dos %f <ENTER>

C:\somedir>unix2dos file1 <-- This runs automatically from you doing the above command
file1: done.

C:\somedir>

要测试你的 for %f 是否能达到你想要的效果,请使用 echo 或 @ECHO 例如
for %f in (*) do @ECHO unix2dos %f

您可以使用 xxd 创建文件并测试它们是否转换成功。Windows 版 xxd 附带 VIM C:\Program" "Files\vim\vim74\xxd.exe

so, i'll create a file, I like this style of command is it allows me to 
create whateer file I want, a dos one or a unix one or anything.  
61 is hex for 'a'       
C:\somedir>echo 610d0a| xxd -r -p >testfile <ENTER>

check the file raw, in its hex
C:\somedir>cat testfile | xxd -p <ENTER>
610d0a

check the file in ascii or unicode
C:\somedir>cat testfile <ENTER>
a

and the following commands just prove that dos2unix and unix2dos work/are working fine.  
C:\somedir>dos2unix testfile <ENTER>
testfile: done.

C:\somedir>cat testfile | xxd -p <ENTER>
610a

C:\somedir>unix2dos testfile <ENTER>
testfile: done.

C:\somedir>cat testfile | xxd -p <ENTER>
610d0a

C:\somedir>

注意:如果使用 *nix 发行版,查看 apt-get(apt-cache search dos2unix)时,软件包确实是(也许并不奇怪!)dos2unix(因此使用 apt-get install dos2unix 安装),并且除了 dos2unix 可执行文件外,还包含 unix2dos 可执行文件。如果您执行 apt-cache search unix2dos,它会显示 dos2unix 软件包。

相关内容