1

我有想要递归搜索的文本mydir/。我通常会输入grep -r "text to find" mydir/",但如果我想搜索除特定文件之外的所有文件,我会输入什么?

例如,我不想搜索文件“myfile.txt”,但它包含在目录中。

我会输入什么?

4

2 回答 2

3

一种快速的方法是使用 BASH 的扩展文件通配。

有一个扩展的否定 glob,您可以按如下方式使用:

shopt -s extglob
grep -r "text to find" !(myfile.txt)

另一种更灵活的方法是使用find和的组合xargs。用于find仅过滤掉您想要的文件,xargs并将它们作为参数传递给 grep。

类似于以下灵魂的工作:

find -type f -not -name myfile.txt | xargs grep "text to find"
于 2012-07-13T05:17:04.637 回答
2

您可以使用以下命令排除文件:

grep -r --exclude="myfile.txt" "text to find" 
于 2012-07-13T05:16:45.323 回答