리눅스에서 텍스트 패턴 검색


20

나는 리눅스 초보자입니다. / home / user1 / 아래에있는 모든 * .java 파일 (하위 폴더 포함)에서 문자열 "teststring"을 검색해야합니다. 쉘 명령을 통해 리눅스에서 어떻게 할 수 있습니까?


커맨드 라인에서 하위 디렉토리에있는 정규식 검색 파일에 관한 몇 가지 질문이있었습니다
RobotHumans

superuser.com/questions/208271/… 빠른 검색으로이 질문을 찾았습니다. 정확히 당신이 찾고있는 것이 아니라 exec cp 대신에 고양이를
잡거나 잡을 수 있습니다.

find / home / user1 -name * .java로 확장자가있는 파일을 나열 할 수 있습니다. grep을 어떻게 사용합니까?
darthvader

답변:


23

가장 쉬운 방법은 GNU grep의 기능을 사용하는 것입니다.

grep -r --include '*.java' teststring /home/user1

GNU grep이없는 다른 유닉스 변형을 사용하는 경우 이식 가능한 방법은 다음과 같습니다.

find /home/user1 -name '*.java' -exec grep teststring {} +

이 grep 기능에 대해 잘 몰랐습니다
RobotHumans

1
현재 디렉토리와 모든 파일을 검색하는 경우grep -r teststring .
Chris Moschini


4

ack 일명 ack-grep 킬러 앱을 내 마음에;)

당신은 할 수 ack some_string /in/path_y찾기에 some_stringpath_y 또는 간단 ack some_other_string현재 디렉토리에 some_other_sting을 찾을 수 있습니다.


2

그것을 발견. 누군가에게 도움이 될 수 있으므로 게시하십시오.

find /home/user01 -name *.java | xargs grep "teststring"

더 좋은 방법이 있으면 수정하십시오.


3
일반적으로, 당신은 사용해야 -print0-0배관 경우 findxargs제대로 이름에 공백이나 줄 바꿈이있을 수 있습니다 파일로 작업하려면 :find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"
추가 공지가있을 때까지 일시 중지.

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