将文件从Dos行尾递归转换为Unix行尾


11

我正在寻找可以在整个目录和子目录上运行的命令,该命令会将所有行尾从DOS转换为UNIX。

它应该能够检测文件是文本文件还是二进制文件。

dos2unix使用macports 安装,但看起来它确实错过了递归选项。


定义文件是文本还是二进制文件?
user151019 2014年

文字:TAB,CR,LF除外,ASCII不得低于32。
Max Ried 2014年

Answers:


22

尝试find . -name "*" -type f -exec dos2unix {} \;


如果dos2unix系统上不可用,则可以使用以下脚本(另存为dos2unix并设置为可执行文件):

#!/bin/sh

perl -pi -e 's/\r\n/\n/;' $*

不要在Git存储库的根目录中运行此命令,否则将破坏存储库!
尼克,

另外,我最好使用perl -pi -e 's/\r\n|\n|\r/\n/;' $*来源)运气好
Nick

1

这是一行shell代码 find . -name "*" -type f -exec perl -pi -e 's/\r\n/\n/;' {} \;


不鼓励一行回答。尝试添加更多细节,或对此发表评论。
Max Ried 2014年

如广告所示!还有什么要补充的?;-)
Taiko 2015年

2
嗯...虽然确实搞砸了一些png文件。小心轻放
Taiko
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.