grep -r과 여기서 find의 차이점은 무엇입니까?

grep -r과 여기서 find의 차이점은 무엇입니까?

특정 문자열을 찾기 위해 디렉토리의 파일을 재귀적으로 grep하려고 합니다. 제가 선택한 솔루션은 다음과 같습니다.

$ find . -type f -exec grep "string to find" {} \+

...그리고 (다른 UNIX 사용자가 좋아하는 것처럼) grep을 재귀적으로 사용하면 무한 루프에 빠지는 것 같습니다.

$ grep -r "string to find"

여기서 find와 grep의 차이점은 무엇입니까? 그건 그렇고, 나는 GNU grep 3.4filesystem 을 사용하고 GNU grep 2.7비교하고 있습니다 .GNU find 4.7.0Linux 5.4.24ext4

답변1

grep명령의 경우 현재 디렉터리와 같은 FILE 모드가 누락되었습니다.

$ grep -r "string to find" .

적어도 일부 Unices의 기본 동작은 표준 입력이 없을 때 이를 사용하는 것입니다. From man grep: "grep은 명명된 입력 파일을 검색합니다(파일 이름이 없거나 단일 하이픈 빼기 기호(-)가 파일 이름으로 제공되면 표준 입력을 검색합니다..."

편집: 죄송합니다. OP에서 특별히 이것을 언급한 것을 확인했습니다 GNU grep 3.4. 이 동작(stdin 대신 작업 디렉토리 사용)은 v 2.7 이후에 변경되었으며 이를 따라잡지 못했습니다. 질문을 완전히 읽지 못한 것에 대한 교훈으로 여기에 답변을 남겨 두겠습니다.

관련 정보