使用至less一个CR LF查找文件

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

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

我想检查整个文件来寻找CR + LF 。 有没有一个工具,或者我需要推出自己的?

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

 grep -l $'\r$' * 

模式$'\r$'将在每行结束之前记录\r

或者使用十六进制值:

 grep -l $'\x0D$' * 

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

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

 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