我怎么能对整个目录中运行DOS2UNIX的?(How can I run dos2unix on a

2019-06-26 23:51发布

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

Answer 1:

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

会递归寻找当前目录下的所有文件,并要求这些文件命令unix2dos



Answer 2:

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

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

这将通过1个文件的时间,并使用4个处理器。



Answer 3:

当我正好是由DOS2UNIX的不良满意,我推出了我自己的简单的工具。 除了在速度和可预见性一些优势,语法也有点简单:

endlines unix *

如果你希望它下到子目录(跳过隐藏显示目录和非文本文件):

endlines unix -r .

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



Answer 4:

这也可能是最好跳过隐藏的文件和文件夹,如.git. 因此,而不是使用find ,如果你的bash版本足够,或者如果你正在使用zsh ,只是做:

dos2unix **

请注意,对于猛砸,这将需要:

shopt -s globstar

....但是这是一个非常有用的功能足够,你应该老老实实地把它放在你.bashrc反正。

如果你不想跳过隐藏的文件和文件夹,但你还是不想惹find (和我也不会怪你),你可以提供第二递归水珠参数匹配隐藏的条目:

dos2unix ** **/.*

请注意,在这两种情况下,水珠将扩大到包括目录,所以你会看到下面的警告(超过潜在的许多倍): Skipping <dir>, not a regular file.



Answer 5:

对于任何Solaris用户(现在用5.10,可以申请到更新的版本太多,以及其他UNIX系统):

DOS2UNIX的不默认为覆盖该文件,它将只打印版本更新到stdout,所以你将不得不两次指定源和目标,即同一个名字:

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


Answer 6:

for FILE in /var/www/html/files/*
do
 /usr/bin/dos2unix FILE
done


Answer 7:

一个常见的情况似乎是标准化的致力于Git仓库中的所有文件的行结尾

git ls-files | xargs dos2unix

请记住,某些文件(例如*.sln*.bat )等用于在Windows操作系统上,并应使 CRLF结束:

git ls-files '*.sln' '*.bat' | xargs unix2dos

如有必要,使用.gitattributes



Answer 8:

我有同样的问题,由于这里的帖子我已经解决了它。 我知道我有大约一百个文件,我需要运行它仅* .js文件。 find . -type f -name '*.js' -print0 | xargs -0 dos2unix

感谢大家的帮助。



Answer 9:

如果没有子目录,也可以采取

ls | xargs -I {} dos2unix "{}"


文章来源: How can I run dos2unix on an entire directory?