【发布时间】:2013-06-19 17:37:47
【问题描述】:
这似乎是一个愚蠢的问题,也许应该将它定向到 gnuwin32 的论坛,但我会在这里尝试一下。
我在 Windows 的 emacs 中使用 grep。我不得不使用 grep-find vs rgrep,我更喜欢使用它,因为它清除了许多我不想 grep 的文件。不幸的是,rgrep 似乎创建了一个“查找”命令,该命令太长以至于阻塞并给出错误。
使用 M-x rgrep 在我的 python 文件中搜索“导入”(我知道这是个愚蠢的例子)给出以下输出:
找到 . -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 "(" -name ".# " -o -name ".o" -o -name "~" -o -name ".bin" -o -name ".bak" -o -name ".obj" -o -name ".map" -o -name ".ico" -o -name ".pif" -o -name " .lnk" -o -name ".a" -o -name ".ln" -o -name ".blg" -o -name ".bbl" - o -name ".dll" -o -name ".drv" -o -name ".vxd" -o -name ".386" -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 "(" -iname "*.py" ")" -exec grep -i -nH -e "import" {} + find:路径必须在表达式之前 用法:find [-H] [-L] [-P] [路径...] [表达式]
如果我将此命令剪切并粘贴到 cygwin 窗口中,该窗口从 /usr/bin 中提取 find,它可以正常工作并找到多个实例。如果我将相同的命令粘贴到然后使用 gnuwin32/bin/find.exe 的 cmd 窗口中,我会得到与上面相同的错误(查找:路径必须在表达式之前)。我还在 mingw shell 中尝试了该命令,它在那里工作(使用 /msys/1.0/bin/find.exe)。更复杂的是,将 find 的 mingw 版本复制到 /gnuwin32/bin/ 没有帮助。没有错误,但 grep 从来没有真正找到任何东西。更糟糕的是,这样做会以同样的方式破坏“grep-find”;什么都找不到。
我猜在使用 gnuwin32 版本的 'find' 时,我在这里击中的整个命令的长度是有限制的。
我想我可以放弃 gnuwin32 并将我的路径更改为指向 /msys/1.0/bin 以获取我使用的命令,但这些命令将不再在 cmd 窗口中运行,至少没有访问 mingw DLL。我的一部分想知道为什么 gnuwin32 版本的 find 令人窒息。有任何想法吗?抱歉这个冗长的问题。
【问题讨论】:
-
“为什么 gnuwin32 版本的 find 卡住了” - 可能是 gnuwin32-find-exe-expands-wildcard-before-performing-search