7z에서 x 크기보다 작은 파일에서만 텍스트를 grep

7z에서 x 크기보다 작은 파일에서만 텍스트를 grep

이진 데이터와 대형(>1Mb) 및 소형(<1Mb) XML 파일이 포함된 7z 파일이 있습니다.

특정 문자열이 포함된 작은 XML 파일을 찾고 싶습니다. zgrep을 사용해 보았지만 모든 파일을 검색하는 것 같습니다.

편집: 내가 한 일은 .7z 내의 모든 xml 파일 목록을 작성하고 6자리 줄만 파악하고 파일 이름만 복사하고 추출하는 것이었습니다. 더 효율적인 방법이 있나요?

7z l test.7z *.xml > tmplist1
num="6"
grep -E "\s[0-9]{$num}\s" tmplist1 | grep -oE '[^[:space:]]+$' | sed "s/^/*/" > tmplist2
7z e -o/tmp test.7z -i@tmplist2 -aos
grep -E "*string*" /tmp/*.xml > tmplist3

답변1

무엇에 대해

find . -iname "*.7z" -o -iname "*.xml" -size -1M -exec grep -options {} \;

? 현재 작업 디렉토리 및 이름 끝에서 find블록 장치, 버퍼링되지 않은 특수 문자 항목, 디렉토리, 파일, 심볼릭 링크, 이름이 지정된 FIFO 파이프, 소켓 등
.(이 경로가 유일한 경로인 경우 필요하지 않음)을 찾습니다(대소문자 구분 안 함). ) 또는 (논리적으로) 이름 끝에 1MB 미만의 크기를 추가 하고 발견된 모든 파일에 대해 실행하여 사용자 고유의 옵션으로 바꾸면 됩니다.
-iname "*.xml".xml
-o
-iname "*.7z".7z.7Z
-size -1M
-exec grep -options {}grep-options
\;-exec

관련 정보