如何以递归方式在目录中的所有文件中搜索和删除^ M?

时间:2015-10-31 09:57:40

标签: bash shell ubuntu

在Windows中编辑的文件在结束行有M ^。我该如何删除它们?

1 个答案:

答案 0 :(得分:6)

  

注意

     

使用此命令时要小心,因为它将替换所有 LF / CR   字符序列,无论位置或上下文如何。特别小心   在你有二进制文件或有特殊文件的情况下   配置格式。带有git子模块的目录就是一个例子   作为角色,这个命令可能会出现问题   序列已经存储为持久提交。

这是回车的控制代码。 Windows对行分隔符使用LF / CR表示法,而UNIX系统仅使用LF。

下面应该以相对于当前目录的文件系统树递归的方式对所有文件执行此操作。

find . -type f | xargs -Ix sed -i.bak -r 's/\r//g' x

上面的代码将进行自动备份(扩展名.bak附加到文件名)。

确定文件正常后,请使用以下命令删除备份。

find . -type f -name '*.bak' | xargs -Ix rm x