我想 grep 除某些文件类型外的所有文件?

chr*_*lee 52 grep

grep除了几种文件类型之外,如何在给定文件夹中递归文件?

例如,我正在我的工作区文件夹中寻找一个字符串,但它最终会在 sql 文件中搜索并生成序列化的字符串。

所以在这种情况下,我想要grep除 sql 文件之外的工作区文件夹。

如果可能的话,我最好寻找单线。

jw0*_*013 66

如果您有 GNU grep,则可以使用该--exclude=GLOB选项,例如

grep -r --exclude='*.sql' pattern dir/
Run Code Online (Sandbox Code Playgroud)


Mar*_*try 10

这将为您执行此操作并排除 .sql 和 .txt 文件:

find /some/dir -type f ! -name '*\.sql' ! -name '*.txt' -print0 | xargs -0 grep 'foobar'
Run Code Online (Sandbox Code Playgroud)

但是,对于您要执行的操作,听起来ack将是一个更好的工具:

ack -a --nosql 'foobar' /some/dir
Run Code Online (Sandbox Code Playgroud)