문제

나는 계란 (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- 헬프 타입"을 참조하십시오.

나는 또한 당신이 사용하고 있다고 가정합니다 오믈렛 그래서 당신은 Grep/ACK/모든 관련 파일을 찾을 수 있습니까?

이 문제는 Collective.recipe.omelette의 창조에 대한 동기였습니다. 작업 세트의 모든 계란을 하나의 디렉토리 구조로 상징 할 수있는 빌드 아웃 레시피로, 좋아하는 검색 유틸리티를 가리킬 수 있습니다.

find <directory> -name '*.py' -exec grep <pattern> {} \;

또한 있습니다 gnu idutils 큰 소스 트리의 식별자를 매우 빠르게 식별하려는 경우. MKID를 실행하여 검색 데이터베이스를 미리 구축해야합니다 (및 구성 파일을 .py 파일을 무시하지 않도록 조정). z3c.recipe.tag 빌드 아웃을 사용하는 경우이를 처리합니다.

비 경쟁자 OSS 솔루션을 원할 경우를 대비하여 ...

나는 pycharm을 사용합니다. 빌드 아웃을 지원했습니다. 빌드 아웃 생성 빈/인스턴스를 가리키고 인스턴스가 사용하는 모든 계란에 대한 외부 종속성을 설정합니다. 그런 다음 모든 IDE의 내성 및 코드 내비게이션이 잘 작동합니다. GOTO 정의, GOTO 인스턴스, 리팩토링 지원 및 물론 검색.

나는 추천한다 이를 드러내고 웃다 검색하기, 오믈렛 Plone 및 Pydev-Feature 'Globals Browser'(Eclipse 또는 Aptana Studio)와 함께 작업 할 때.

대답이 충분하지 않기 때문에 ...

일상적으로 개발 중이라면 Pydev (또는 더 쉽게 수정 된 Eclipse 인 Aptana Studio)를 사용하여 Eclipse를 설치하려는 노력의 가치가 있습니다.이 경우 찾기 도구가 바로 거기에 있습니다.

EMACS의 RGREP 명령을 발견 한 이후 저의 그레핑 생활은 훨씬 더 만족 스럽습니다.

Plone의 출처에서 'iportletdataprovider'를 찾고 싶다고 가정 해 봅시다. 그래요:

  1. M-x rgrep
  2. EMACS 프롬프트 검색 문자열 (iportletdataprovider)
  3. ... 그런 다음 검색 할 파일 (*.py)
  4. ... 그러면 어떤 디렉토리 (~/plone/buildout-cache/eggs). 이미 파일을 편집하고 있다면이 기본값은 해당 파일의 디렉토리로 나타납니다. 이는 일반적으로 내가 원하는 것입니다.

결과는 새로운 버퍼로 나타납니다. 상단에는 find | xargs grep 명령 emacs가 달렸다. 모든 경기가 강조 표시됩니다. 표준 텍스트 검색 명령을 사용하여 버퍼를 검색 할 수 있습니다. 무엇보다도, 나는 해당 파일을 열기 위해 일치에서 Enter (또는 클릭)를 누를 수 있습니다.

일하는 꽤 좋은 방법입니다. 나는 기억할 필요가 없다는 것을 좋아한다 find | xargs grep 인수 시퀀스, 그러나 필요한 경우 모든 힘이 있습니다.

Emacs rgrep example

OpenGrok은 소스 검색 및 탐색을위한 훌륭한 선택입니다. 그러나 Java에서 달린다.

나는 정말로 같은 것이 있었으면 좋겠다 http://opengrok.plone.org/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top