关于bash:如何在Linux上使用grep搜索包含dos行结尾(CRLF)的文件?

How do you search for files containing dos line endings (CRLF) with grep on Linux?

我想在Linux上用grep搜索包含DOS行尾的文件。像这样:

1
2
3
grep -IUr --color '

'
.

上面的内容似乎与文字rn相匹配,这不是我们想要的。

它的输出将通过xargs管道传输到todos中,以便像这样将crlf转换为lf

1
grep -IUrl --color '^M' . | xargs -ifile fromdos 'file'


grep的可能并不是你想要的,这把椅子的方法。它将打印一行的每一行中的每一个文件的匹配方法。除非你想说的,是一个时代的运行Todos 10 10行的文件,最好的方式不是t grep去讨论它。使用find file文件是对每一个运行在树grepping通",然后你会得到的CRLF"的方法对输出的每一行的中心线endings DOS风格的文件,有: </P >

1
find . -not -type d -exec file"{}"";" | grep CRLF

你会得到某样: </P >

1
2
3
./1/dos1.txt: ASCII text, with CRLF line terminators
./2/dos2.txt: ASCII text, with CRLF line terminators
./dos.txt: ASCII text, with CRLF line terminators


使用v ctrl + + Enter to a,ctrl m literal grep字符串返回字符为你的道路。SO: </P >

1
grep -IUr --color"^M"

将工作,如果有,那是一个^Mliteral CR I suggested作为你的输入。 </P >

如果你想在文件列表,选择你想添加的-l为好。 </P >

解释 </P >

  • -I二进制文件的错误
  • -Uprevents grep对带钢的Cr的特点。它将默认decides做它如果它这是一个文本文件。
  • 在每个目录下的文件的行-r递归的方法。


1
2
grep -IUlr $'
'

explainshell.com - grep - iulr </P >


如果你的grep版本所支持的P(——Perl -选项,那么RegExp) </P >

1
2
grep -lUP '
$'

可以被应用。 </P >


1
2
3
4
5
6
7
8
9
# list files containing dos line endings (CRLF)

cr="$(printf"
")"    # alternative to ctrl-V ctrl-M

grep -Ilsr"${cr}$" .

grep -Ilsr $'
$'
.   # yet another & even shorter alternative

搜索查询的是…………………我有一个相似的问题…………………有人submitted混合线 endings成的版本控制,所以现在我们有一个与0x0d波茨of files 0x0d0x0aendings线。值得注意的是 </P >

1
grep -P '\x0d\x0a'

finds系下,whereas </P >

1
grep -P '\x0d\x0d\x0a'

和 </P >

1
grep -P '\x0d\x0d'

好的,所以有可能是finds系的某"征服"的情况是在grep 当它comes到网上ending型…………………我们的方法unfortunately!!!!!!! </P >


你可以使用file命令行中的一个。它让你的字符编码的文件与terminators along线。 </P >

1
2
3
4
$ file myfile
myfile: ISO-8859 text, with CRLF line terminators
$ file myfile | grep -ow CRLF
CRLF

如果你喜欢,我们没有一个T,minimalist include文件niceties状的命令和grep的反斜杠,在你的表达式是不cooperate,尝试这个: </P >

1
2
3
4
$ for file in `find . -type f` ; do
> dump $file | cut -c9-50 | egrep -m1 -q ' 0d| 0d'
> if [ $? -eq 0 ] ; then echo $file ; fi
> done

你可能想modifications化妆师对在include: </P >

  • find命令的locate微调到只在你想扫描文件
  • 相变的dump命令对OD或什么你要utility dump文件
  • confirm的命令包括一切都是领先和落后的空间作为富裕的十六进制字符输出作为刚刚从《utility dump
  • 限制式输出到第一个1000字元或SO方法的效率

for example,这可能为你工作的某样instead系式:用OD </P >

1
 od -t x2 -N 1000 $file | cut -c8- | egrep -m1 -q ' 0d| 0d|0d$'