재귀 검색은 Solaris에서 grep과 함께 작동하지 않습니다.

재귀 검색은 Solaris에서 grep과 함께 작동하지 않습니다.

우리의 Solaris 서버에서는 이것이 작동하지 않는다는 것을 발견했습니다 grep -r. 이는 제가 사용하는 일반적인 접근 방식입니다 grep. egrep같은 행동을 하는 것 같습니다 .

grep기계를 제어할 수 없는 경우 재귀 검색을 수행할 수 있는 방법이 있습니까 ? 아니면 find출력을 여기에 연결 해야 합니까 grep?

답변1

다음을 사용하려는 경우 find이것이 가장 빠른 방법입니다 .

find . -type f -exec grep pattern {} +

그러나 Gnu grep은 이미 컴퓨터에 설치되어 있을 가능성이 높습니다.

이는 Solaris 11의 기본 설치의 일부입니다 /usr/gnu/bin/grep. Solaris 10의 경우에도 마찬가지입니다 /usr/sfw/bin/ggrep. 이전 버전에서는 sunfreeware 또는 기타 저장소에서 설치되었을 수 있으므로 /usr/local/bin/grep/opt/csw/bin/grep공통 위치를 확인하세요.

답변2

사용꽉 붙잡음반대로 설치된 경우.

예를 들어, 현재 디렉터리에서 모든 하위 디렉터리( )까지 "mysearchstring"을 검색 -R하고 일치하는 파일 이름과 경로를 표시하며( -H) 바이너리를 무시합니다( -I). *명령 끝에 .

/usr/sfw/bin/ggrep -H -R -I "mysearchstring" *

ggrep은 /usr/sfw/bin EXPORT 명령을 사용하여 구성 파일에 추가하면 명령줄에서 직접 호출할 수 있습니다.

PATH=$PATH:/usr/sfw/bin
export PATH

Solaris 버전: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise

답변3

나는 Solaris에 익숙하지 않지만 GNU/Linux에서 Solaris로 전환하면 대부분의 명령이 약간 다르게 작동한다는 것을 알게 될 것입니다. Unix 도구의 GNU 버전에는 "독점" Unix에 없는 추가 기능이 있습니다.

GNU grep을 다운로드할 수 있습니다.여기그런 다음 컴파일하고 설치하십시오.

루트 액세스 권한이 있는 경우 유틸리티가 /usr/local에 설치되도록 구성 --prefix=/usr/local을 실행해야 할 수도 있습니다.

루트 액세스 권한이 없으면 configure --prefix=${HOME}을 실행하여 유틸리티를 홈 디렉터리에 설치해야 할 수도 있습니다.

답변4

다음에서 독립형 ackPerl 스크립트를 다운로드하세요.http://betterthangrep.com/, 그것을 당신의 것에 넣고 $HOME/bin그것을 사용하는 방법을 배우십시오. 나는 광고한 대로 일상적인 개발 작업에 grep보다 더 잘 작동한다는 것을 알았습니다.

관련 정보