2013-04-08 50 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