터미널에서 특정 텍스트가있는 파일을 찾는 방법


168

특정 텍스트 문자열을 포함하는 모든 파일을 찾고 싶습니다. 터미널에서 어떻게 하시겠습니까?


빠른 결과를 원한다면 Spotlight를 사용하십시오. 또한 PDF 또는 ODF와 같이 파일 내에 텍스트를 직접 저장하지 않아도되는 파일을 찾으려면.
Joey

좋은 조언이지만 제 경우에는 파일이 네트워크 드라이버에 있기 때문에 색인이 생성되었는지 확실하지 않습니다. 또한 특정 프로그램에 속하는 xml 파일입니다.
Svish

한 번 봐 가지고 unix.stackexchange.com/a/37932/213832을 이 솔루션은 잘 작동
boyd4715

답변:


280
grep -r 'text goes here' path_goes_here

1
나는 man grepgrep의 모든 훌륭한 옵션을 발견 할 것을 제안합니다
Ludovic Kuty

이것은 경로에 존재하는 모든 파일을 나열하고 추가합니다 : No such file or directory 텍스트 발생 목록 만 가져 오려고합니다. 우리는 어떻게 그 목록을 얻을 수 있습니까?
CP3O

7
알았어요 : grep -lr "text pattern" ./ -s; grep -lr "text pattern" [PATH OF PARENT] -s
CP3O

그러나 파일 세부 정보 (이름, 경로)가 아니라 일치하는 파일의 내용을 반환합니다. @ CP3O의 제안이 효과가 있습니다.
지리학

28

스포트라이트 사용

mdfind "text goes here"
mdfind -onlyin /home/user/Desktop -live "live update"

잊지 말고 :

man mdfind

2
스포트라이트로 색인을 생성하지 않는 파일 (예 : 숨겨진 폴더 내의 파일, 시스템 구성 파일 등)에 대해서도이 기능이 작동합니까?
피터 버그

Grep은 .xlsx 파일을 구문 분석하지 않는 것처럼 보이지만 정상적으로 작동합니다. 또 다른 쉬운 예 : mdfind -onlyin "searchtext"
FvD

11
  1. Ack를 통해

brew install ack ack "text goes here"

  1. 찾기를 통해

find . |grep "text goes here"

  1. grep를 통해

grep -RnslI "text goes here"


4

취향과 필요에 따라 아래 중 하나를 선택할 수 있습니다. 현재 디렉토리에서 재귀 적으로 "비동기"텍스트를 포함하는 파일을 검색해야한다고 가정하면 다음과 같은 방법 중 하나로 수행 할 수 있습니다.

grep 사용 여기에 이미지 설명을 입력하십시오

ack 사용 여기에 이미지 설명을 입력하십시오


2

Ignacio의 답변은 훌륭하며 특정 텍스트가 포함 된 파일을 찾는 데 도움이되었습니다. 내가 직면 한 유일한 문제는이 명령을 실행할 때 패턴이 표시되지 않은 파일을 포함하여 모든 파일이 나열된다는 것입니다.

No such file or directory 이것이 패턴을 포함하지 않는 파일과 함께 보이는 것입니다.

대신 다음 -s과 같이 명령에 추가하십시오 . grep -lr "text pattern" ./ -s; grep -lr "text pattern" [PATH DIRECTORY] -s패턴이 포함 된 파일 만 표시됩니다.

비슷하게 grep -nr "text pattern" ./ -s; grep -nr "text pattern" [PATH OF DIRECTORY] -s명령은 파일과 행 번호 및 패턴 발생을 인쇄합니다.

내 이해가 틀렸다면 저를 시정하십시오.

참조 : grep이 'No such file or directory'오류를 출력하지 않게하려면 어떻게해야합니까?


그 성가신 것을 피하는 또 다른 방법 은 파일 오류가 없다는 것입니다. stderr을 null로 파이프하는 것입니다. grep ... 2>/dev/null. 이 솔루션은 stdout이 아닌 stderr 스트림에 오류 메시지를보고하므로 대부분의 프로그램에서 작동합니다. 많은 파일에 대해 권한이 거부find 되었다고 표시 되므로이 솔루션을 여러 번 사용 했습니다 .
jpaugh

(1) No such file or directory존재하는 파일에 대한 메시지를 받는 경우 , 무언가 잘못되었거나 시스템이 고장난 것입니다. (2) 무엇 [PATH OF PARENT]과 관련이 있습니까?
G-Man

@ G-Man [PATH OF DIRECTORY]낯선 사람이 내가 왜 넣었는지 알고 싶어하는 경우를 표시하기 위해 답변을 편집했습니다../
CP3O

@ G-Man 우분투가 아닌 맥을 사용하고 있는데, 시스템이 어떻게 손상 될지 잘 모르겠지만, 아직 아무것도하지 않았습니다.
CP3O
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.