我在使用转换整个目录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 "{}"