Ag가 검색하는 파일의 크기를 제한하는 방법은 무엇입니까?

Ag가 검색하는 파일의 크기를 제한하는 방법은 무엇입니까?

하고 싶지 않다주식회사2Mio보다 큰 파일을 검색합니다.

ag 명령에 대한 --file-size 플래그와 같은 것을 찾을 수 없지만 이를 알 수 있는 방법이 있습니까?

나는 많이 얻는다

ERR: Skipping foo.bar: pcre_exec() can't handle files larger than 2147483647 bytes.

답변1

zsh뿐만 아니라 다른 명령과 함께 를 사용 하면 ag다음을 수행할 수 있습니다.

ag -- pattern **/*(.LM-3)

크기가 2MiB 이하인 **/일반 파일( )을 (재귀적으로) 보려면 ( 정수 ebi바이트로 반올림된 길이 는 ( ) 보다 엄격하게 작음 ).LLM-3

이는 숨겨진 파일을 제외하지만, files 및 co 와 일치하는 파일의 경우 ag, files 및 co 와 일치하는 파일은 .ignore문자 그대로 전달될 때 제외되지 않습니다.

GNU 시스템의 bash 또는 기타 Korn과 유사한 셸에서는 항상 다음을 수행하는 함수나 스크립트를 사용할 수 있습니다.

ag_in_small_non_hidden_files() {
  xargs -r0a <(
    LC_ALL=C find . -name '.?*' -prune -o -type f -size -3M -print0
  ) ag "$@"
}

동등한 작업을 수행합니다(파일 목록은 정렬되지 않지만 ag파일 목록은 기본적으로 다시 정렬되지 않습니다. 목록을 정렬하려면 항상 find출력을 파이프할 수 있습니다).sort -z

답변2

2GiB 이상의 파일을 사전 스캔하여 .ignore검색 중인 디렉터리 구조에 쓸 수 있습니다.

예를 들어

find . -size "+$(( 2 * 1024 * 1024 * 1024 - 1 ))c" > .ignore

줄 바꿈, 와일드카드, 백슬래시, 따옴표, 후행 공백 등 까다로운 문자가 경로에 포함된 파일에는 경고가 적용됩니다.

2MiB 보다 엄격하게 큰 파일의 경우 사용할 수 있습니다findGNU를 포함한 일부 구현을 보고되는 파일 크기 는 1MiB 이하입니다.findfind . -size +2M-size -2M

관련 정보