我有想要递归搜索的文本mydir/
。我通常会输入grep -r "text to find" mydir/"
,但如果我想搜索除特定文件之外的所有文件,我会输入什么?
例如,我不想搜索文件“myfile.txt”,但它包含在目录中。
我会输入什么?
一种快速的方法是使用 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"
您可以使用以下命令排除文件:
grep -r --exclude="myfile.txt" "text to find"