在Bash中,有没有办法“grep -r foobar *”,除了“log”目录之外的所有东西?

时间:2010-10-13 20:02:41

标签: bash

\ls -1 | grep -v log | xargs grep -r foobar

部分有效,但它也会跳过“博客”目录,因为它也被grep -v log排除在外。 (上面的\ls是让ls不做任何别名,例如ls -F

4 个答案:

答案 0 :(得分:3)

\ls -1 | grep -v ^log$ | xargs grep -r foobar

grep --exclude-dir=log -r foobar *

答案 1 :(得分:2)

find . -name log -prune -o -type f -print0 |xargs -0 grep foobar

答案 2 :(得分:1)

GNU grep有这个选项:

--exclude-dir=DIR
              Exclude directories matching the pattern DIR from recursive searches.

答案 3 :(得分:0)

使用bash,您可以使用extglob

shopt -s extglob
grep "foobar" !(log)