nwa*_*aet 51 scripting line-endings
我有一堆(数百个)应该有Unix行结尾的文件.我强烈怀疑其中一些有Windows行结尾,我想以编程方式找出哪些行.
我知道我可以跑了
flip -u或者在脚本中类似的东西来转换所有东西,但我希望能够识别那些需要先改变的文件.
Ada*_*eld 69
您可以使用该file
工具,它将告诉您行结束的类型.或者,您可以使用dos2unix -U
哪个将所有内容转换为Unix行结尾,无论它是从什么开始.
sti*_*mms 28
你可以使用grep
egrep -l $'\r'\$ *
Run Code Online (Sandbox Code Playgroud)
joa*_*him 14
有点像:
perl -p -e 's[\r\n][WIN\n]; s[(?<!WIN)\n][UNIX\n]; s[\r][MAC\n];' FILENAME
Run Code Online (Sandbox Code Playgroud)
虽然一些regexp可能需要精炼和整理.
这将在每行结尾处输出带有WIN,MAC或UNIX的文件.好,如果你的文件是某种可怕的混乱(或差异),并具有混合的结尾.
这是最安全的答案。Stimms 答案不考虑子目录和二进制文件
find . -type f -exec file {} \; | grep "CRLF" | awk -F ':' '{ print $1 }'
Run Code Online (Sandbox Code Playgroud)
file
查找文件类型。带有 CRLF 的那些有 Windows 返回字符。的输出file
由 a 分隔:
,第一个字段是文件的路径。