grep:./Coding/CNL.md:是一个目录

时间:2018-06-07 05:17:27

标签: bash

我打算使用管道

找到包含单词desire的所有markdown文件
In [37]: !find -E . -iregex ".*/[^/]+\.md" -print0 -exec grep -i "desire" "{}" \; | grep ".md"
grep: ./Coding/CNL.md: Is a directory
Binary file (standard input) matches

如何解决这样的问题?

1 个答案:

答案 0 :(得分:1)

关于错误:

grep: ./Coding/CNL.md: Is a directory

表示目录作为参数传递给grep,grep无法处理目录,添加-type f选项,仅过滤文件。

Binary file (standard input) matches

表示stadard输入(因为grep在管道中使用,没有文件名)被检测为二进制文件,grep不打印输出以避免将特殊字符或转义序列发送到终端。这可能是由于-print0选项使用NUL字符(或\0)作为输出分隔符。

目前尚不清楚为什么使用-print0-exec grep ...,这会混合文件名和文件的内容。