재귀적으로 검색할 때 경로 접두사가 선택되도록 grep에 어떻게 지정합니까?

재귀적으로 검색할 때 경로 접두사가 선택되도록 grep에 어떻게 지정합니까?

예. 내가 찾고 있는 단어가 있어요."고양이". 나는 그 단어가 현재 작업 디렉토리 아래 어디든 위치할 수 있다는 것을 알고 있습니다. 그래서 나는 사용한다grep -r, 이는 다음 형식의 결과를 제공합니다.

./example_root/[dir1|dir2]/[SOME_ARBITRARY_SUBPATH]/cat_file,

어디

고양이 파일

단어가 포함된 파일입니다."고양이". 내가 관심이 있는 것에만 관심이 있다면 어떨까요?

/example_root/dir1/[무엇이든_경로]

내 경로의 접두사? 어떻게 말해야 해?grep?

답변1

나는 노력할 것이다

grep -rl cat directory | xargs dirname

어디

  • grep -rl cat directory ( -r) 디렉토리에서 cat 및 ( -l) lisy 파일을 반복적으로 검색합니다.
  • | xargs dirname각 파일은 "제공"되어 dirname파일 부분이 제거됩니다.

답변2

댓글에 있는 @Kusalananda의 답변이 제가 원하는 것입니다. 이렇게 하세요.

grep -r 'cat' /example_root/dir1/

그러나 단어가 발견된 디렉토리 이름을 검색하려는 경우 다음(@Archemar 제공)이 유용할 것입니다.

grep -rl cat directory | xargs dirname

관련 정보