ack 및 grep에서 최대 깊이 검색을 수행하는 방법은 무엇입니까?


32

ack현재 폴더에서 텍스트 만 검색 하도록하는 방법이 있습니까? (또는 max-depth레벨을 지정 하시겠습니까?) 그리고 grep?


1
아니요, ack에는 -n재귀 하지 않는 max-depth 옵션 이 없습니다.
Andy Lester

답변:


22

사용 -n을 위해 no-recurse:

$ ack -n foo

grep기본적으로 재귀 적이 지 않으므로 -r재귀 검색을 원할 경우에만 플래그를 사용해야합니다 .

grep다음과 같이 현재 디렉토리를 검색 할 수 있습니다 .

$ grep -- foo *

13
질문에 대답하지 않습니까? (심도 2로 되풀이하고 싶은 경우)
Steven Lu

좋은 지적이다. 어떤 제안?
Eric Wilson

29

-exec 인수를 사용하여 찾을 수 있습니다. 예:

find . -maxdepth 1 -exec grep foo {} \;

이것은 확장 될 수 있습니다. 즉 -maxdepth 2


스테판, 내 대답 ( -maxdepth 1)은 확장 가능했습니다. 예를 들면 -maxdepth 2. 편집 한 내용을 설명하는 방법을 모르겠습니다.
데이비드 윌킨스

@를 사용하지 않으면 @stephane에 도달하지 않습니다.
Braiam

4
예, 죄송합니다. 편집 한 내용이 너무 관대하다는 데 동의합니다. ( -maxdepth)이 이식 가능 / 표준 구문이 아님 을 분명히 밝히고 싶을 수도 있습니다 (GNU 및 일부 BSD 만 해당). 또한 \;여기를 사용하는 것이 중요하지 않습니다 ( grep파일 당 하나씩 실행 ). 파일 이름이 항상 인쇄되도록 하려면 grep -H foo {} +(GNU 특정) 또는 grep foo /dev/null {} +(표준)을 사용하십시오. 표준 상응하는 -maxdepth 2find . -path './*/*' -type d -prune -o -type f -exec ...
스테판 Chazelas가

2
또한 당신은 (를 포함하여 디렉토리에 대한 오류 메시지를 줄 것이다 있습니다 .당신이 포기하지 않는 한 -mindepth 1GNU는 동안) grep와 디렉토리를 읽으려고하지 않을 것이다 -r(이것은 재귀 그들에). 당신은 추가 할 수 있습니다 -d skipgrep(GNU의 GREP 가정) 이상 추가 ! -type dfind더 나은 또는 -type f(또는 -xtype fGNU 가정 find당신은 아마하지 않는 한)grep 비정규직 파일을 읽을 수 있습니다.
스테판 샤 첼라

4
grep -Hin파일 이름과 해당 행이 표시되는 행을 볼 수 있도록이 방법 을 사용하는 경향이 있습니다 .
GDP2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.