我在Emacs中使用grep时遇到了问题。
a) grep似乎不理解用于搜索.c和.h文件的.[ch]。这是Emacs提供的默认选项,使用lgrep命令。以下示例是在.c/.h文件中搜索单词“global”。
grep -i -nH "global" *.[ch]
grep: *.[ch]: No such file or directory
Grep exited abnormally with code 2 at Mon Feb 16 19:34:36
这个格式是否无效?
b) 使用rgrep时我遇到了以下错误:
find . "(" -path "*/CVS" -o -path "*/.svn" -o -path "*/{arch}" -o -path "*/.hg" -o -path "*/_darcs" -o -path "*/.git" -o -path "*/.bzr" ")" -prune -o -type f "(" -iname "*.[ch]" ")" -print0 | xargs -0 -e grep -i -nH "global"
FIND: Wrong parameter format
Grep finished (matches found) at Mon Feb 16 19:37:10
我在Windows XP上使用Emacs 22.3.1以及GNU W32 Utils(grep、find、xargs等)。Grep v2.5.3和find v4.2.20。
我缺少什么?
更新:
很遗憾,由于解决方案分散,无法接受多个答案...
grep -i -nH "global" *.c *.h
这解决了第一个问题。感谢luapyad!
(setq find-program "c:\\path\\to\\gnuw32\\find.exe")
实际上,emacs使用的是Windows的find.exe。强制使用gnu32 find解决了第二个问题。感谢scottfrazer。
但是,我仍然最喜欢ack。