我怎样才能在整个目录上运行dos2unix?

我必须使用dos2unix来转换整个目录。 我无法弄清楚如何做到这一点。

find . -type f -print0 | xargs -0 dos2unix

将recursion地查找当前目录中的所有文件,并调用这些文件的dos2unix命令

如果它是一个大目录,你可能要考虑运行多个处理器:

 find . -type f -print0 | xargs -0 -n 1 -P 4 dos2unix 

这将一次传递1个文件,并使用4个处理器。

由于我偶然不满意dos2unix,我推出了我自己的简单工具。 除了速度和可预测性方面的一些优点之外,语法也更简单一些:

 endlines unix * 

如果你想让它进入子目录(跳过隐藏的dirs和非文本文件):

 endlines unix -r . 

endlines可在这里https://github.com/mdolidon/endlines

最好是跳过隐藏的文件和文件夹,例如.git. 所以,而不是使用find ,如果你的bash版本是足够zsh ,或者如果你使用zsh ,只要做:

 dos2unix ** 

请注意,对于Bash,这将需要:

 shopt -s globstar 

….但是,这是一个有用的function,你应该诚实地把它放在你的.bashrc无论如何。

如果你不想跳过隐藏的文件和文件夹,但是你仍然不想弄乱find (而且我不会责怪你),你可以提供第二个recursionglob参数来匹配只有隐藏的条目:

 dos2unix ** **/.* 

请注意,在这两种情况下,glob将扩展为包含目录,所以您将看到以下警告(可能多次): Skipping <dir>, not a regular file.

对于任何Solaris用户(使用5.10,也可能适用于更新的版本以及其他unix系统):

dos2unix不会默认覆盖文件,它只是将更新版本打印到标准输出,所以你必须指定源和目标,即两次相同的名称:

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

如果没有子目录,也可以取ls | xargs -I {} dos2unix "{}" ls | xargs -I {} dos2unix "{}"

对于/ var / www / html / files / *中的FILE

/ usr / bin / dos2unix文件
DONE