如何在Emacs中使用rgrep有效地搜索替代方案

时间:2014-03-20 15:19:43

标签: emacs grep

我试图在OpenERP的代码库中找到名称" default_debit_account_id"和" default_credit_account_id"使用。

如果我单独搜索它们,它们都会产生超过20个结果。但是,如果我尝试 M-x rgrep RET \bdefault_(debit|credit)_account_id\b RET ,则此时不会重试结果。我也尝试在括号前放置一个(" \")和双斜杠(" \"),但它没有帮助。

最终这是由Emacs运行的命令

find . -type d \( -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o -path \*/MCVS -o \
       -path \*/.svn -o -path \*/.git -o -path \*/.hg -o -path \*/.bzr -o \
       -path \*/_MTN -o -path \*/_darcs -o -path \*/\{arch\} \) -prune -o \
       \! -type d \( -name .\#\* -o -name \*.o -o -name \*\~ -o -name \*.bin -o -name \*.lbin -o -name \*.so -o -name \*.a -o -name \*.ln -o -name \*.blg -o -name \*.bbl -o -name \*.elc -o -name \*.lof -o -name \*.glo -o -name \*.idx -o -name \*.lot -o -name \*.fmt -o -name \*.tfm -o -name \*.class -o -name \*.fas -o -name \*.lib -o -name \*.mem -o -name \*.x86f -o -name \*.sparcf -o -name \*.dfsl -o -name \*.pfsl -o -name \*.d64fsl -o -name \*.p64fsl -o -name \*.lx64fsl -o -name \*.lx32fsl -o -name \*.dx64fsl -o -name \*.dx32fsl -o -name \*.fx64fsl -o -name \*.fx32fsl -o -name \*.sx64fsl -o -name \*.sx32fsl -o -name \*.wx64fsl -o -name \*.wx32fsl -o -name \*.fasl -o -name \*.ufsl -o -name \*.fsl -o -name \*.dxl -o -name \*.lo -o -name \*.la -o -name \*.gmo -o -name \*.mo -o -name \*.toc -o -name \*.aux -o -name \*.cp -o -name \*.fn -o -name \*.ky -o -name \*.pg -o -name \*.tp -o -name \*.vr -o -name \*.cps -o -name \*.fns -o -name \*.kys -o -name \*.pgs -o -name \*.tps -o -name \*.vrs -o -name \*.pyc -o -name \*.pyo \) -prune -o  \
       -type f \( -name \*.py \) \
       -exec grep -i -nH -e \\bdefault_\(debit\|credit\)_account_id\\b {} +

因此grep看到了模式(在shell转义之后)\bdefault_(debit|credit)_account_id\b。这有什么不对?我该如何搜索?

1 个答案:

答案 0 :(得分:1)

您需要使用Emacs flavor of regex\bdefault_\(debit\|credit\)_account_id\b