将新行字符更改为Linux格式



我从svn上下载了一些软件的源代码,想要构建它:

$ ./configure
bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory

Character ^M是一个r回车字符。当我把文件的行尾改为Linux格式时,它就开始工作了,但是有很多这样的文件,很难手工完成。如何改变行结束在目录及其子目录的所有文件Linux格式?

让dos2unix转换目录中的每个文件

find . -type f -exec dos2unix {} ;

您可以使用dos2unix(它可能在一个名为"tofrodos"的包中),这会就地更改文件。

dos2unix input

或者,如果您想做得非常简单,您可以使用tr从文件中删除所有r。

tr -d 'r' < input > output

类似这样的代码将查找所有以"*.sh"结尾的文件,并在它们上面调用dos2unix来转换行尾:

find . -name "*.sh" -exec dos2unix {} ;

查找所有文件,将-type f传递给find,不指定-name参数。详细信息请参见Unix/Linux查找命令教程。

有像dos2unix/unix2dos这样的工具,旧的工具来自dos/todos。

最新更新