텍스트가 포함된 모든 파일 검색

텍스트가 포함된 모든 파일 검색

Busybox를 사용하면 여러 디렉터리를 통해 반복적으로 여러 파일 내에서 표현식을 검색하면서 텍스트 파일만 검색하려면 어떻게 해야 할까요?

우리는 파일의 접미사가 무엇인지 모릅니다. .sh일 수도 있고, 아무것도 아닐 수도 있고, 다른 것일 수도 있습니다. 인코딩이 무엇인지는 확실하지 않지만 인코딩을 기반으로 검색을 고려하고 있었습니다.

시도해 보았지만 busybox grep -r바이너리 파일도 검색하므로 시간이 많이 낭비됩니다.

답변1

grep바이너리 파일을 , 또는 --binary-files으로 처리하는 옵션을 지원합니다 . 마지막 옵션은 바이너리 파일을 건너뛰어야 합니다. 와 동일합니다 . 테스트를 했는데 Busybox가 바이너리 파일을 건너뛰는 것을 지원하는 것 같습니다.binarytextwithout-matchgrep -Igrep-I

grep파일이 바이너리인지 텍스트인지 결정하는 데 "마법"이 아닙니다. 단순히 처음 몇 바이트를 확인하여 텍스트인지 아닌지 확인하고 파일의 나머지 부분에 대해서도 동일하다고 가정합니다( 에 따라 man grep).


head -1 myfile참고 사항: 예를 들어 파일이 같은지 비교하여 이를 에뮬레이트할 수 있습니다 head -1 myfile | strings. 사용 가능한 경우 file훨씬 더 의존적이지만 Busybox에 없으며 Busybox가 주로 사용되는 경우 시스템에 없을 가능성이 높습니다.

답변2

구조체와 바이너리 파일의 차이점은 무엇입니까

struct MyBin
{
    byte a;
    byte b;
    byte c;
}

가치와 함께

myBin.a = 70;
myBin.b = 111;
myBin.c = 111;

그리고 텍스트가 포함된 텍스트 파일 Foo은요?

모든 텍스트 파일은 문자 인코딩(ASCII, UTF-8 등...)이라는 특수 조회 코드를 사용하여 해석하는 이진 파일입니다. 따라서 "텍스트 파일"과 별도로 "바이너리 파일"을 구별하는 쉬운 방법은 없습니다.

실행 비트가 설정된 파일을 제외하거나 파일 크기 미만의 파일만 검색하는 방법이 있을 수 있지만(텍스트 파일이 1MB를 초과하는지는 의심스럽습니다) grep 결과를 필터링하는 방법에 대한 지식이 부족합니다. 이를 수행하는 방법에 대한 예를 들어보십시오.

관련 정보