다음을 사용해야 합니다.
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