查找至少有一个CR LF

时间:2015-10-12 14:15:06

标签: linux bash newline

我在Linux上。我收到了一份混合的文件列表,我忘记事先核实这些文件。我的编辑器(emacs)使用LF(\n)来处理一些最初有CR + LF(\r\n)(!!)的文件。我已经意识到这种方式太晚了,我认为这给我带来了麻烦。

我想在我的cwd中找到至少一个CR + LF的所有文件。我不相信file命令,因为我认为它只检查第一行,而不是整个文件。

我希望检查整个文件以查找CR + LF 。有没有这方面的工具,还是我需要自己动手?

2 个答案:

答案 0 :(得分:2)

您可以使用此grep命令列出目录中至少有一个CR-LF的所有文件:

grep -l $'\r$' *

模式$'\r$'将在每行结束前提交\r

或使用十六进制值:

grep -l $'\x0D$' *

\x0D会找到\r(ASCII:13)。

答案 1 :(得分:0)

dos2unix不仅可以将dos行结束(CR + LF)转换为unis(LF),还可以使用-i选项显示文件信息。 e.g。

sh-4.3$ (echo "1" ; echo "") > 123.txt 
sh-4.3$ unix2dos 123.txt 
unix2dos: converting file 123.txt to DOS format...
sh-4.3$ cat 123.txt ; hexdump -C 123.txt ; dos2unix --info='du' 123.txt
1

00000000  31 0d 0a 0d 0a                                    |1....|
00000005
       2       0  123.txt
sh-4.3$ dos2unix 123.txt 
dos2unix: converting file 123.txt to Unix format...
sh-4.3$ cat 123.txt ; hexdump -C 123.txt ; dos2unix --info='du' 123.txt
1

00000000  31 0a 0a                                          |1..|
00000003
       0       2  123.txt