2013-04-08 49 views
0

我有一个Emacs的功能(fgf "thing")创建一个子进程,看起来像这样:排除.svn文件从git的查找文件+ xargs的grep的+管

find . \(-type f -a \! -regex '\.(svn|git)' \) -print0 | xargs -0 grep -nH -e 'thing' 

基本上我不想grep任何.git.svn文件的。我怎样才能做到这一点?

+0

什么不符合您发布的命令? – 2013-04-08 15:52:19

回答

3
find . -type d '(' -name .svn -o -name .git ')' -prune -o -type f -exec grep -nH -e 'thing' {} + 

使用-prune避免递归到.svn.git目录比使用正则表达式更好。另外-exec优于-print0 | xargs -0

+0

谢谢。没有工作。有一个目录和输出列表说grep::是一个目录 – gknauth 2013-04-08 15:57:02

+1

@gknauth看我的编辑。增加了'-type f'。 – 2013-04-08 15:58:22

+0

用你的'-type f'编辑它完美的工作。非常感谢你! – gknauth 2013-04-08 16:03:12