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