grep: --exclude-dir에는 이름에 일부 텍스트가 포함되어 있습니다.

grep: --exclude-dir에는 이름에 일부 텍스트가 포함되어 있습니다.

다음을 사용해야 합니다.

grep -rio pattern --exclude-dir=".config/dir1*" --exclude-dir=".test*"

grep이름에 및 가 포함된 pattern모든 폴더를 피 하려면 ,.config/dir1.test

예를 들어 .config/dir1, , .config/dir1/dir2.test./other/.test제외되어야 합니다.

내가 이 폴더를 제외하지 않은 것은 무엇입니까? 도와주실 수 있습니까?

감사해요

답변1

주문하다.test/및 의 파일을 제외합니다 other/.test/.

전체 경로가 아닌 디렉토리의 기본 이름만 확인되므로 .config/dir1그 안에 있는 파일은 제외되지 않습니다 . --exclude-dir당신은 또한 제외 --exclude-dir="dir1"됩니다 elsewhere/dir1. 디렉터리가 제외되면 해당 하위 디렉터리도 제외되므로 --exclude-dir="dir1"제외 됩니다 .config/dir1/dir2.

grep의 제외 패턴이 충분하지 않은 경우 find와 함께 사용할 수 있습니다 grep. 구문은 find더 복잡하지만 기능은 더 강력합니다. 예를 들어 .config/dir1이름이 지정된 다른 디렉터리는 제외할 수 있지만 제외할 수는 없습니다 dir1. (GNU grep이 있으므로 GNU find도 있다고 가정합니다.)

find . \
     -path "./.config/dir1" -prune -o \
     -name ".test" -prune -o \
     -type f -print0 |
  xargs -0 grep -io pattern

관련 정보