개별 파일을 무시하고 디렉토리에서 반복적으로 검색하려면 grep을 사용하십시오.

개별 파일을 무시하고 디렉토리에서 반복적으로 검색하려면 grep을 사용하십시오.

grep이 전체 디렉토리를 검색하지만 한 파일 내의 일치 항목을 무시하는 방법이 있습니까?

내가 사용하는 명령은 다음과 같습니다.

grep -rn 'SearchTextHere'

무시해야 할 파일의 파일 이름이 =.

예, 파일 이름은 단지 등호일 뿐입니다. 응, 나도 이해가 안 돼.

(거기에 있어야 하는지 확실하지 않으므로 직접 삭제할 수 없습니다. 실수로 파일에 대한 grep 파이핑이나 그와 유사한 것은 아닌 것 같습니다.)

그렙 버전 3.4

답변1

=다음과 같은 경우에 발생할 수 있습니다. - 명명된 파일:

[ a >= b ]

또는:

expr a >= b

틀렸습니다. 왜냐하면 이것은 본질적으로 동일하기 때문입니다.

[ a b ] > '='
expr a b > '='

즉, 이러한 [또는 expr명령을 실행하고 출력을 로 리디렉션합니다 =. >이는 쉘 구문의 리디렉션 연산자이므로 >인용되어야 합니다.

expr a '>=' b
[ a '>=' b ]

( 연산자 의 내장 기능을 [지원하는 구현은 거의 없지만 >=; )yash[

=파일이 비어 있는 경우 이것이 가능한 설명 중 하나입니다.

=이제 GNU의 재귀 검색에서 호출된 모든 파일을 제외하려면 grep다음을 사용할 수 있습니다.

grep -rn --exclude== SearchTextHere .

또는:

grep -rn --exclude = SearchTextHere .

--exclude-from파일의 제외 목록을 제공하려는 경우 유용합니다. 여기서는 다음과 같이 할 수 있습니다.

echo = | grep --exclude-from=/dev/stdin -rn SearchTextHere .

를 사용하는 것보다 이것이 더 좋습니다 --exclude.

어쨌든, 현재 디렉토리에 있는 파일만 제외하도록 GNU에 지시할 수 있는 방법은 없습니다 grep -r(그리고 다른 하위 디렉토리에 있는 파일은 계속 검색합니다). 이렇게 하려면 파일 찾기 및 제외를 사용하여 파일의 텍스트를 검색하도록 호출할 수 있습니다. 이는 표준 옵션이 아닙니다.==find=grep-rgrep

find . ! -path './=' -type f -exec grep -n SearchTextHere /dev/null {} +

(추가된 /dev/null보증은 파일이 하나만 발견 grep되더라도 항상 파일 이름을 인쇄합니다 . GNU에서는 이 옵션을 사용할 수도 있습니다 .)findgrep-H

또는 건너뛰기목차통화 =및 그 안에 있는 모든 파일(이것은 grep --exclude =작동하지 않음):

find . -name = -prune -o -type f -exec grep -rn /dev/null {} +

(여기서 건너뛰세요.어느파일/디렉토리 이름은 현재 디렉터리의 디렉터리 만 건너뛰기 =위한 것입니다 .-path ./==

답변2

Steeldriver의 의견 제안이 작동하는 것 같습니다.

grep -rn 'SearchTextHere' --exclude==

아니면 일반적인 파일 이름은 다음과 같습니다.

grep -rn 'SearchTextHere' --exclude=FileToIgnore

매뉴얼 페이지에서 "--exclude-from"을 사용하려고 합니다. 그게 무엇을 위한 것인지 모르겠습니다.

관련 정보