Как вы просматриваете код, который находится в разных каталогах? - PullRequest
18 голосов
/ 14 мая 2009

Я работаю над программой на Python, которая интенсивно использует яйца (Plone). Это означает, что существует 198 каталогов, заполненных кодом Python, которые я мог бы искать во время отладки. Есть ли хороший способ искать только файлы .py только в этих каталогах, избегая несвязанного кода и больших двоичных файлов?

Ответы [ 12 ]

22 голосов
/ 15 мая 2009
find DIRECTORY -name "*.py" | xargs grep PATTERN

Кстати, с момента написания этой статьи я обнаружил ack , что является гораздо лучшим решением.

(И после этого редактирования я обнаружил ag).

18 голосов
/ 15 мая 2009

Я бы настоятельно рекомендовал ack , замену grep, "предназначенную для программистов с большими деревьями разнородного исходного кода" (с сайта)

16 голосов
/ 15 мая 2009
grep -r -n "PATTERN" --include="*.py" DIRECTORY
6 голосов
/ 16 июня 2009

Я также часто использую 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-types" для всех доступных типов.

Я также предполагаю, что вы используете омлет , поэтому вы можете grep / ack / найти все связанные файлы?

4 голосов
/ 27 февраля 2011

Эта проблема послужила мотивацией для создания коллектива. Recipe.omelette. Это рецепт компоновки, который может объединить все яйца из вашего рабочего набора в одну структуру каталогов, на которую вы можете указать свою любимую поисковую утилиту.

4 голосов
/ 15 мая 2009
find <directory> -name '*.py' -exec grep <pattern> {} \;
2 голосов
/ 04 марта 2011

И просто потому, что не хватает ответов ...

Если вы разрабатываете регулярно, стоит затратить усилия на установку Eclipse с Pydev (или даже проще, Aptana Studio - это модифицированный Eclipse), и в этом случае инструменты поиска прямо здесь.

2 голосов
/ 28 февраля 2011

Я рекомендую ухмыляться для поиска, омлет при работе с plone и функцией pydev 'Globals browser' (с Eclipse или Aptana Studio).

2 голосов
/ 27 февраля 2011

На всякий случай, если вам нужно решение OSS без командной строки ...

Я использую Pycharm. Он имеет встроенную поддержку для buildout. Вы указываете на созданный build / bin / instance, и он устанавливает внешние зависимости проектов для всех яиц, используемых экземпляром. Тогда все самоанализ IDE и навигация по коду работают хорошо. Определение Goto, экземпляры Goto, поддержка рефакторинга и, конечно, поиск.

2 голосов
/ 18 сентября 2009

Также есть GNU idutils , если вы хотите очень быстро найти идентификаторы в большом дереве исходных текстов. Требуется заранее создать базу данных поиска, запустив mkid (и настроив его файл конфигурации, чтобы не игнорировать файлы .py). z3c.recipe.tag позаботится об этом, если вы используете buildout.

...