我必须使用dos2unix转换整个目录。我不知道该怎么做这件事。


当前回答

由于我对dos2unix不太满意,所以我推出了自己的简单实用程序。除了在速度和可预测性方面的一些优势外,语法也更简单:

endlines unix *

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

endlines unix -r .

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

其他回答

找到。-type f -print0 | xargs -0 dos2unix . txt

将递归找到当前目录内的所有文件,并调用这些文件dos2unix命令

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

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

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

最好跳过隐藏的文件和文件夹,比如.git。所以,如果你的bash版本是最近的,或者你正在使用zsh,而不是使用find,只需执行:

dos2unix **

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

shopt -s globstar

....但这是一个非常有用的功能,你应该把它放在你的。bashrc中。

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

dos2unix ** **/.*

注意,在这两种情况下,glob都将扩展到包含目录,因此您将看到以下警告(可能多次):

我认为最简单的方法是:

dos2unix $(find . -type f)