查找至少有一个 CR LF 的文件

Find files with at least one CR LF

我在 Linux。我收到了一个混合的文件列表,我忘记事先核实了。我的编辑器 (emacs) 对某些最初具有 CR+LF (\r\n) (!!) 的文件使用了 LF (\n)。我意识到这一点为时已晚,我认为这给我带来了麻烦。

我想在我的 cwd 中找到所有包含 至少 一个 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