파일 유형별로 특정 디렉터리에서 grep 패턴을 반복적으로 사용

파일 유형별로 특정 디렉터리에서 grep 패턴을 반복적으로 사용

grepGUNARS디렉토리의 패턴에 대해 파일 유형별로 재귀적으로 수행하는 방법 입니까 gadin-1.0?

grep -rn --include=*.rc "GUNARS" ~/Opstk/bin/gadin-1.0/"

답변1

--include=*.rc--include=셸 기능을 사용하여 현재 디렉터리에서 다음으로 시작하고 끝나는 파일 이름 목록을 셸에 요청하는 방법입니다 ..rc와일드카드,파일 이름 생성또는경로명 확장.

예를 들면 다음을 참조하세요.

zsh% echo --include=*.rc
zsh: no matches found: --include=*.rc
zsh% : > --include=foo.rc > --include=bar.rc
zsh% ls
'--include=bar.rc'  '--include=foo.rc'
zsh% echo --include=*.rc
--include=bar.rc --include=foo.rc

--include=*.rc여기에서 텍스트를 에 전달하려고 합니다 grep.

grep -rn '--include=*.rc' GUNARS ~/Opstk/bin/gadin-1.0/

또는:

grep -rn --include='*'.rc GUNARS ~/Opstk/bin/gadin-1.0/

그냥 *인용해 보세요. GUNARS이 6개 문자 중 어느 것도 쉘 구문에서 특별하지 않기 때문에 따옴표가 필요하지 않습니다 .

이 코드의 셸 구문에 포함된 특수 문자는 다음과 같습니다.

  • 매개변수를 구분하기 위해 여기에서 사용된 공간
  • ~HOMEcsh와 유사한 Korn/POSIX와 유사한 쉘, 그리고 적어도 일부 최신 쉘에서는 환경 변수(홈 디렉토리)의 값으로 확장됩니다.
  • 명령을 구분하는 개행 문자입니다.

그들은 바로 그거야기필코 아니다인용하십시오. 원하는 경우 다른 모든 내용을 인용 할 수 있지만 다음을 bash포함한 여러 셸에서 인용할 수 있습니다.~인용되지 않음 /또는 :확장하려면¶:

'grep' '-rn' '--include=*.rc' 'GUNARS' ~/'Opstk/bin/gadin-1.0/'

비교하다:

bash-5.2$ echo ~'/'
~/
bash-5.2$ echo ~/
/home/me/

위에서 언급한 Bourne과 유사한 쉘(예: zsh 또는 bash)에서는 작은 따옴표 대신 큰 따옴표를 사용할 수 있지만 여전히 큰 따옴표( $, `, \²) 안에 특별한 의미를 유지하는 일부 문자가 있다는 점에 유의하십시오.

의 경우 grep-r--include비표준 옵션입니다. 모든 grep구현이 이를 지원하는 것은 아니며 이를 다르게 해석하는 구현도 있습니다( 의 경우 많음 -r, 의 경우 거의 없음 --include).

일반 파일의 파일 이름과 줄 번호를 보고하는 GUNARS보다 이식성이 높은 표준 방법 은 다음과 같습니다..rc$HOME/Opstk/bin/gadin-1.0/

find ~/Opstk/bin/gadin-1.0/ -name '*.rc' -type f \
  -exec grep -n GUNARS /dev/null {} +

최소한 두 개의 파일을 전달 /dev/null해야 합니다 . grep파일을 전달하는 경우에만 해당 경로가 인쇄되지 않습니다. 일부 구현에는 파일 경로를 강제로 인쇄하는 옵션이 grep있습니다 .-H

셸을 사용하면 zsh다음 작업도 수행할 수 있습니다.

grep -n GUNARS /dev/null ~/Opstk/bin/gadin-1.0/**/*.rc(.)

일반 파일 검색은 재귀 와일드카드 및 와일드카드 한정자를 사용하여 수행됩니다.

여기에는 몇 가지 장점이 있습니다.

  • 파일 목록 정렬
  • 숨겨진 항목을 제외합니다(glob 한정자를 사용하여 다시 추가할 수 있음 D).
  • 파일 이름이 유효한 텍스트로 구성되지 않은 경우에도 적용됩니다.

그러나 몇 가지 단점도 있습니다.

  • 일치하는 파일이 많은 경우 시스템 명령 길이 제한에 도달할 수 있습니다(이 문제는 를 사용하여 해결할 수 있음 zargs).
  • 일치하는 파일이 없으면 오류가 보고됩니다.

csh의 경우 1, 여기서물결표 확장from, ~'/'이름이 지정된 사용자의 홈 디렉터리로 확장됩니다 /(또는 보고알 수없는 사용자: /.실수).

² 또한 인코딩이 일부 로케일의 여러 문자와 `동일하거나 동일한 인코딩으로 끝나는 문자를 찾으세요.\

관련 정보