나는 같은 코드베이스를 계속해서 모색하고 있습니다. 잘 작동하지만 각 명령은 약 10 초가 걸리므로 더 빨리 만드는 방법을 생각하고 있습니다.
grep
어떤 종류의 인덱스를 사용할 수 있습니까? 인덱스가 복잡한 정규 표현식에 도움이되지 않을 것이라고 생각하지만 대부분 매우 간단한 패턴을 사용합니다. 이 경우 인덱서가 있습니까?
편집 : 나는 ctags 등에 대해 알고 있지만 전체 텍스트 검색을하고 싶습니다.
나는 같은 코드베이스를 계속해서 모색하고 있습니다. 잘 작동하지만 각 명령은 약 10 초가 걸리므로 더 빨리 만드는 방법을 생각하고 있습니다.
grep
어떤 종류의 인덱스를 사용할 수 있습니까? 인덱스가 복잡한 정규 표현식에 도움이되지 않을 것이라고 생각하지만 대부분 매우 간단한 패턴을 사용합니다. 이 경우 인덱서가 있습니까?
편집 : 나는 ctags 등에 대해 알고 있지만 전체 텍스트 검색을하고 싶습니다.
답변:
recoll , swish-e 및 sphinx 와 같은 도구가 있지만 필요한 검색 기준을 지원할 수 있는지 확인해야합니다.
리콜
Recoll은 Unix / Linux 용 개인 전체 텍스트 검색 도구입니다.
스위시
Swish-e는 웹 페이지 또는 기타 파일 모음을 인덱싱하기위한 빠르고 유연하며 무료 인 오픈 소스 시스템입니다.
스핑크스
Sphinx를 사용하면 SQL 데이터베이스, NoSQL 스토리지 또는 파일에 빠르고 쉽게 파일을 일괄 색인화하고 검색 할 수 있습니다.
grep이 설명하는 것처럼 느리다는 것에 놀랐습니다. 검색되는 파일 수를 줄일 수 있습니까? 예를 들어 하나의 실행 파일 (프로젝트의 많은 파일 중 하나)에 대해서만 소스 파일을 검색 해야하는 경우 해당 프로그램의 소스 파일을 나열하는 명령에서 grep에 이름을 제공합니다.
grep expression `sources myprogram`
sources
내 개발 환경에 특정한 프로그램이지만 동등한 것을 가지고 있거나 구성 할 수 있습니다.
나는 당신이 같은 명백한 기술을 시도했다고 가정합니다.
find /foo/myproject -name "*.c" -exec fgrep -l searchtext
현재 옵션이 검색 속도를 크게 높일 수 있다는 제안 을 읽었 습니다.-P
grep
grep, no. 그러나 색인을 사용하고 코드 기반을 목표로하는 여러 프로그램이 있습니다. ctags
(vim과 함께 제공되는 버전이 있음), etags
(emacs와 함께 사용하기 위해), global
(편집기와 더 독립적 임)은 내가 지금 생각하고 있지만 다른 것일 수 있습니다.
아니요, 그렇게 생각하지 않습니다. 그러나 간단한 해결책이있을 수 있습니다. 나는 기회를 주면 grep보다 훨씬 빠르며 더 나은 검색 결과를 얻기 위해 더 짧은 검색 문자열이 필요하며 많은 동일한 기능을 가지고 있지만 동일한 명령 스위치를 많이 사용합니다. 색인화하지는 않았지만 더 빠르게 만드는 한 가지 방법은 검색하지 않으려는 많은 것들을 무시한다는 것입니다. Perl로 작성되었으며 Perl의 정규 표현식을 사용하므로 Mac 및 Windows 포트도 있습니다.