우분투의 전체 서버에서 Grep


3

전체 서버에서 grep 기능을 사용해야합니다.

나는 다음을 시도했다.

grep -r 'MyString' / 
grep -r 'MyString' /*

그러나 이들 중 어느 것도 작동하지 않는 것 같습니다. 어떤 제안?


무엇을 찾고 있습니까? 파일 또는 폴더 이름? (텍스트) 파일의 내용?
Bart Kiers

"작동하지 않음"을 정의하십시오. 그들은 분명히 작동해야합니다.

답변:



5
sudo find / -type f -exec grep "Strring" {} \;

그래도이 작업을 수행 하시겠습니까? 이것은 모든 파일 시스템을 통과 할 것이며 (로컬이든 아니든) 서버의 CPU를 최대한 활용할 수 있습니다.


1
sudo거기에 던져서 모든 파일을 읽을 수 있으며 승자가 될 것입니다!
Carl Smotricz

0
cd /
find . | xargs grep MyString

특정 파일 형식을 찾고 있다면 :

find . -name *.java | xargs grep Integer

0

나는 두 번째 비 접근 방식입니다.

그러나 루트가 아닌 경우 권한 거부 메시지가 가득 차면 / dev / null로 리디렉션하십시오. 그런 다음 원하는 것을 다시 얻을 수 있습니다.

 find . / 2>/dev/null | xargs grep MyString 2>/dev/null


0

Ubuntu 리포지토리에서와 같이 패키지화 된 ack을 설치 ack-grep하십시오. 명령 조합을 사용하지 않고도 원하는 것을 정확하게 수행하는 find와 grep의 강력한 조합과 같습니다.

$ sudo ack-grep -a 'MyString' /

-a옵션은 ack의 기본 필터링 동작을 무시하여 검색을 알고있는 파일 형식으로 제한합니다. "~"로 끝나는 백업 파일 또는 ".svn"과 같은 소스 제어 디렉토리와 같은 특정 파일과 디렉토리는 여전히 제외됩니다. -u옵션 을 사용하여이 동작을 재정 의하여 모든 것을 완전히 검색 할 수 있습니다 .

검색을 특정 파일 형식으로 제한하려면

$ sudo ack-grep -aG '.*txt' MyString

에 대한 주장 -G은 glob가 아닌 정규 표현식 이라는 점에 주목하십시오 .

또는 C ++ 파일과 같이 이미 알고있는 파일 형식의 경우 :

$ ack-grep --cpp 'SomeFunctionName'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.