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

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

如何grep在给定文件夹中递归文件(几种文件类型除外)?

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

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

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

答案1

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

grep -r --exclude='*.sql' pattern dir/

答案2

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

find /some/dir -type f ! -name '*\.sql' ! -name '*.txt' -print0 | xargs -0 grep 'foobar'

然而听起来像确认对于您想要做的事情来说,这将是一个更好的工具:

ack -a --nosql 'foobar' /some/dir

相关内容