-r 스위치를 사용하지 않고 grep을 사용하여 상위 폴더의 하위 폴더에 있는 파일에서 텍스트 문자열을 찾는 방법

-r 스위치를 사용하지 않고 grep을 사용하여 상위 폴더의 하위 폴더에 있는 파일에서 텍스트 문자열을 찾는 방법

저는 Solaris 10을 사용하고 있는데 grep하나는 in /usr/bin이고 다른 하나는 out입니다 /usr/xpg4/bin. 사용 방법에 대한 정보를 찾고 있었는데 grep모든 답변에 내 버전 -r전환 에 대한 내용이 나와 있습니다 .-Rgrep

답변1

표준(POSIX) 구문은 다음과 같습니다.

find /path/to/parent -type f -exec grep 'XXX' /dev/null {} +

(이는 파일 이름이 항상 인쇄되도록 /dev/null하기 위한 것입니다 .) grep이는 Solaris를 포함한 모든 POSIX 시스템에 적용됩니다. 제대로 작동하지 않는 유일한 90년대 이후 시스템은 오래된(현재는 매우 오래된) GNU 시스템입니다.

GNU는 원래 다음과 같은 -print0조건자와 -0옵션을 도입했습니다 xargs.

find /path/to/parent -type f -print0 | xargs -0 grep 'XXX' /dev/null

이 기능을 지원하는 다른 구현이 있지만 Solaris는 그렇지 않습니다.

위에서는 이론적으로 파일 없이 실행 -r되지 않도록 하는 옵션을 추가하고 싶지만 다음과 같이 작동하지 않습니다.grep가지고 다닐 수 있는이 특별한 경우에는 기능적 차이가 발생하지 않습니다.

답변2

GNU 사용 grep(설치된 경우):

ggrep -A3 -B23 'word' -R /log/

그러면 폴더의 모든 파일이 정규식과 일치하는지 확인 word하고 출력 및 파일 경로가 표시됩니다.

GNU는 grep-R플래그를 지원합니다.

답변3

/usr/sfw/bin/ggrepSolaris에서 다음과 같은 경로에 존재하는 ggrep을 사용하면 됩니다 .
/usr/sfw/bin/ggrep -H 'search-term' <file-name>*
특정 단어로 시작하는 파일 이름 집합에서 검색어를 검색합니다.

관련 정보