如何将文件夹中的所有文件转换为不同的行尾(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 的命令(例如,find
,dos2unix
等)bash
。安装后,将文件从 Windows 转换为 Unix 文件结尾应该很容易。
假设你有文件(以以下后缀结尾.java)位于名为源码并且您想将它们的结尾从 Windows 转换为 Unix 结尾。
- 定位源码在 Windows 资源管理器中。
- 右键单击该文件夹并从 Windows 上下文菜单中打开 Git Bash。
- 跑步:
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 软件包。