你怎么查询通过代码的生活在许多不同的目录?
题
我的工作Python程序,使得大量使用鸡蛋(Plone).这意味着有198目录完整的代码我可能需要通过搜索,同时调试。是否有一个好方法,只搜索。py文件中只有那些目录,避免了不相关代码和大型的二进制文件吗?
解决方案
find DIRECTORY -name "*.py" | xargs grep PATTERN
顺便说一句,因为写这个,我发现 ACK ,这是一个更好的解决方案。
(而且,由于该编辑的,我已经发现AG)。
其他提示
我会强烈建议 ACK 时,一个grep的替代品,“旨在与异构源代码大树程序员”(从网站)
grep -r -n "PATTERN" --include="*.py" DIRECTORY
我也用ACK很多这些天。我没有调整它一下,找到所有相关的文件类型:
# Add zcml to the xml type:
--type-add
xml=.zcml
# Add more files the plone type:
--type-add
plone=.dtml,.zpt,.kss,.vpy,.props
# buildout config files
--type-set
buildout=.cfg
# Include our page templates to the html type so we can limit our search:
--type-add
html=.pt,.zpt
# Create txt file type:
--type-set
txt=.txt,.rst
# Define i18n file types:
--type-set
i18n=.pot,.po
# More options
--follow
--ignore-case
--nogroup
重要的是要记住的是ACK不会找到的文件扩展名是否不在其配置。见“ACK --help类型”为所有可用的类型。
我还假设使用的是煎蛋,以便你可以grep / ACK /找到所有相关的文件?
此问题是用于创建collective.recipe.omelette的动机。这是一个扩建配方可符号链接所有的鸡蛋都从你的工作设置成一个目录结构,你可以点自己喜欢的搜索工具。
find <directory> -name '*.py' -exec grep <pattern> {} \;
还有 GNU idutils 如果你想与grep为在一个大的源代码树标识非常非常快。它需要事先建立一个搜索数据库,通过运行MKID(和调整它的配置文件,不能忽视.py文件)。 z3c.recipe.tag 需要的是关心,如果使用扩建。
...
我用pycharm。它内置了用于扩建的支持。你点它在扩建产生斌/实例,并将它设置由实例所使用的所有的鸡蛋项目的外部依赖。然后,所有的IDE的自省和代码导航工作很好。转到定义,转到情况下,重构支持当然搜索的和
和仅仅是因为没有足够的答案......
如果你经常发展,这是非常值得与Pydev的(或更容易,集锦工作室 - 这是一种改性的Eclipse)安装Eclipse的努力的结果,在这种情况下查找工具在那里
自从发现 Emacs 的 rgrep 命令以来,我的 grep 生活更加令人满意。
假设我想在 Plone 的源代码中找到“IPortletDataProvider”。我愿意:
M-x rgrep
- Emacs 提示输入搜索字符串 (IPortletDataProvider)
- ...然后要搜索哪些文件(*.py)
- ...然后是哪个目录(~/Plone/buildout-cache/eggs)。如果我已经在编辑文件,则默认为该文件的目录,这通常正是我想要的。
结果出现在新的缓冲区中。顶部是 find | xargs grep
命令 Emacs 运行。所有匹配项都会突出显示。我可以使用标准文本搜索命令搜索缓冲区。最重要的是,我可以在匹配项上按 Enter 键(或单击)来打开该文件。
这是一种非常好的工作方式。我喜欢我不需要记住 find | xargs grep
参数序列,但如果我需要的话,所有的力量都在那里。
OpenGrok为源检索和导航的极佳选择。上的Java运行时,虽然。
我真的希望有什么样的 http://opengrok.plone.org/