2008-10-16 4 views
3

svn의 특수 폴더를 제외하고 "foo"에 대한 svn 작업 복사본의 모든 cpp/h 파일을 검색해야합니다. GNU grep에 대한 정확한 명령은 무엇입니까?svn 작업 복사본의 빠른 재귀 grepping

+0

Frentos가 설명했듯이 맨 페이지를 참조하여 시간을 들여서 질문에 쉽게 대답 할 수있었습니다. – freespace

+2

여유 공간, 왜 "쉬운"질문에 답하지 않으시겠습니까? 맞다면 기꺼이 대답을 받아 들일 것입니다. – Constantin

답변

9

나는이 목적으로 grep과 비슷하지만 소스 제어 디렉토리를 제외하는 방법을 알고있다.

+2

우분투/데비안의 ack 패키지는 "ack"라고하는 간지 코드 변환기가 있기 때문에 실제로 "ack-grep"이라고합니다. – JesperE

1

이것은 RTFM입니다. 나는 'man grep'과 '/ exclude'를 입력하고 :

--exclude = GLOB 와일드 카드 이 일치하는 기본 이름이 GLOB와 일치하는 파일을 건너 뜁니다. 파일 이름 glob은 *,? 및 [...]을 와일드 카드로 사용하고 \를 사용하여 와일드 카드 또는 백 슬래시 문자 을 말 그대로 인용 할 수 있습니다.

들인다에서 이름 = FILE 그베이스로부터 판독 된 파일 이름 globs와 중 일치 FILE 스킵 파일 ( --exclude 기재된 바와 같이 문자 일치를 사용).

--exclude-dir = DIR 패턴 DIR과 일치하는 디렉토리를 재귀 적 검색에서 제외합니다. 작업 디렉토리에서

+1

RTFMing 사람들은 유즈넷에서하는 일입니다. 그래서 다르다. 그건 그렇고, 당신은 그 질문에 대답하지 않았습니다. – Constantin

7

그렙 -ir --exclude-DIR =을 .svn foo는 *

할 것입니다. 대/소문자를 구분하여 검색하려면 'i'를 생략하십시오.

만 cpp를 확인하고 싶은 .H 파일

그렙 -ir --include = {cpp를, .H} --exclude-DIR =을 .svn foo는 *

+0

*를 cpp/h와 만 일치하는 것으로 대체 할 수있는 기회가 있습니까? – Constantin

+0

죄송합니다. --exclude-dir 옵션을 찾을 수 없습니다 : http://unixhelp.ed.ac.uk/CGI/man-cgi?grep – Constantin

+0

모든 grep 버전에서 사용할 수있는 것은 아닙니다. 하지만 내 우분투 8.04 시스템 거기에 적어도 –

2
를 사용하는 경우

오프 주제 조금가는 : 당신이 (즉,하지 버전 제어) 당신에게 소스 제어 파일을 검색 할 비 추적 파일의 많은 작업 복사본이있는 경우

, 당신은 할 수

1

나는 .bashrc에 추가 한 this 스크립트를 작성했습니다. 자동으로 grep에서 SVN 디렉토리를 제외하고 찾기 및 찾기. 내가 SVN 나무의 내용 및 파일을 grepping 이러한 bash는 별칭을 사용

+0

진짜 발견하고 찾을 수 있습니까? – Sarien

1

은 ... 차라리 GUI 기반의 IDE보다 명령 줄에서 검색 (코딩에 대한 vim 사용)을 더 빠르고 더 즐거운 찾을 :

s() { 
    local PATTERN=$1 
    local COLOR=$2 
    shift; shift; 
    local MOREFLAGS=$* 

    if ! test -n "$COLOR" ; then 
     # is stdout connected to terminal? 
     if test -t 1; then 
      COLOR=always 
     else 
      COLOR=none 
     fi 
    fi 

    find -L . \ 
     -not \(-name .svn -a -prune \) \ 
     -not \(-name templates_c -a -prune \) \ 
     -not \(-name log -a -prune \) \ 
     -not \(-name logs -a -prune \) \ 
     -type f \ 
     -not -name \*.swp \ 
     -not -name \*.swo \ 
     -not -name \*.obj \ 
     -not -name \*.map \ 
     -not -name access.log \ 
     -not -name \*.gif \ 
     -not -name \*.jpg \ 
     -not -name \*.png \ 
     -not -name \*.sql \ 
     -not -name \*.js \ 
     -exec grep -iIHn -E --color=${COLOR} ${MOREFLAGS} -e "${PATTERN}" \{\} \; 
} 

# s foo | less 
sl() { 
    local PATTERN=$* 
    s "$PATTERN" always | less 
} 

# like s but only lists the files that match 
smatch() { 
    local PATTERN=$1 
    s $PATTERN always -l 
} 

# recursive search (filenames) - find file 
f() { 
    find -L . -not \(-name .svn -a -prune \) \(-type f -or -type d \) -name "$1" 
} 
관련 문제