我打算使用管道
找到包含单词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
如何解决这样的问题?
答案 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 ...
,这会混合文件名和文件的内容。