[unix] 리눅스에서 디렉토리의 전체 내용에서 단어를 검색하는 방법

전체 컨텐츠에서 무언가를 검색해야 함

나는 노력하고있다 :

find . | xargs grep word

오류가 발생합니다.

xargs : 종료되지 않은 견적

이것을 달성하는 방법?



답변

xargs다른 명령이 생성하지 않는 형식으로 입력해야하므로 효과적으로 사용하기가 어렵습니다. 여기서 잘못 된 것은 입력 할 때 이름이 따옴표로 묶어야하는 파일이 있다는 xargs것입니다 (아마도 포함 ').

grep 이 재귀 검색을 위해 -r또는 -R옵션을 지원하는 경우이를 사용하십시오.

grep -r word .

그렇지 않으면 -exec기본을 사용하십시오 find. xargs파일 이름에 제약이없는 것을 제외 하고는와 동일한 효과를 얻는 일반적인 방법입니다 . 합리적으로 최신 버전을 find사용하면 보조 명령을 한 번의 호출로 여러 파일을 그룹화 할 수 있습니다. 전달 /dev/nullgrep보장하지만 것은 하나의 파일에 호출 할 일 경우에도 각 경기의 앞에 파일 이름이 표시됩니다.

find . -type f -exec grep word /dev/null {} +

이전 버전 find(이전 시스템 또는 OpenBSD 또는 BusyBox와 같은 축소 유틸리티)에서는 한 번에 하나의 파일에서만 보조 명령을 호출 할 수 있습니다.

find . -type f -exec grep word /dev/null {} \;

일부의 버전 find과는 xargs그들이 더 인용이 필요하지 않도록 별도의 파일 이름에 널 문자를 사용하여 제대로 통신 할 수 있도록 확장이있다. 요즘에는 OpenBSD만이이 기능을 가지고 -exec … {} +있습니다.

find . -type f -print0 | xargs -0 grep word /dev/null


답변

첫 번째 옵션을 의미하는 것 같아

grep recursive, 파일 내 컨텐츠 검색

grep -R "content_to_search" /path/to/directory

재귀, 일치하는 파일 검색

ls -lR | grep "your_search"


답변

GNU 도구 (Linux 태그가 정확하면 수행)가 있으면 일반적인 인용 문제를 사용 -print0하고 -0해결할 수 있습니다.

find . -type f -print0 | xargs -0 grep word


답변

또한 ACK , 특별한 같은 디렉토리 건너 설계 .svn, .git등을. 개발자를위한 일일 도구입니다.

일반적인 스위치의 에 매우 가깝습니다 .

전의. :

ack -r string .

ack-grep데비안 및 데비안 패키지 .


답변

현재 디렉토리에서 grep을 사용할 수 있습니다 :

 grep -irl root .


답변

파일에서 문자열을 찾으려고 생각합니다.

시험 find . -name "*" | xargs grep -l "string"


답변