폴더에있는 모든 .zip 파일의 내용을 나열하고 특정 파일에 대해 grep하는 방법은 무엇입니까?


28

348 개의 zip 파일이 있는데 zip 파일 중 하나에있는 파일을 찾고 싶습니다. unzip -l와일드 카드로 작동하지 않습니까?

모든 .zip파일의 내용을 grep나열하고 zip에 포함 된 모든 파일의 병합 된 목록을 통해 어떻게 목록을 표시 할 수 있습니까?

답변:


17

사용하는 zipinfo것이 좋은 해결책입니다. 그러나 일반적으로 파일 목록에 명령을 적용하고 명령이 파일 목록을 허용하지 않을 때마다 for루프를 사용할 수 있습니다 .

for file in *.zip; do
    unzip -l "$file"
done \
| grep "\.zip\|setup"

검색중인 파일에 다음과 같이 공백이 있으면 your filegrep 정규 표현식에서와 같이 백 슬래시로 모든 공백을 이스케이프해야합니다 grep "\.zip\|your\ file".


완벽하게 작동하는 유일한 문제는 지퍼 이름이 표시되지 않는다는 것입니다.
Eduard Florinescu

설정을 찾은 파일 이름도 표시하고 +1하고 허용하는 파일 이름을 표시하기 위해 정규식을 게시하고 추가했습니다
Eduard Florinescu

오 예,에 대한 논쟁에 대한 인용문을 잊어 버렸 unzip습니다.
Konrad Rudolph 8

1
@JaySullivan이 코드를 사용하지 않으면 공백이 포함 된 경로에 실패합니다. ls의 출력을 파이프하지 마십시오. 당신은 할 수 사용하는 find대신.
Konrad Rudolph

12

사용할 수 있습니다 zipinfo. 기본 우분투 설치에 포함되어 있습니다. 자세한 내용은 매뉴얼 페이지 를 확인하십시오 .

예를 들어, setup현재 디렉토리의 여러 zip 파일에서 패턴을 찾으 려면 다음 명령을 사용하십시오.

find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup

나는 두 개의 우분투 OS (11.10 및 12.04)에서 테스트 한 모든 지퍼에 대해 caution: filename not matched: case1.zip... caution: filename not matched: case348.zip를 얻습니다 .
Eduard Florinescu

@EduardFlorinescu 업데이트 된 답변을 시도하십시오. 대답은 나를 위해 일하고 있지만
안와르

문제는 파일에 포함되어있을 수 있으며 다음 setup과 같이 작동하지만 동일한 오류가 발생한다는 것입니다.zipinfo -l * | grep "setup"
Eduard Florinescu

나는 대답을 편집했다. 지금은 더 강력하다고 생각합니다
Anwar

1
노력해 주셔서 감사합니다. +1이지만 zip 파일 이름에 공백이 있으면 작동하지 않습니다.
Eduard Florinescu

6

zip 아카이브에 파일을 나열하려면 다음 명령을 사용할 수 있습니다.

unzip -l

압축 된 아카이브를 grep하려면 해당 유형의 아카이브 형식으로 작동하도록 빌드 된 압축 된 아카이브 유틸리티를 사용해야합니다.

Zip 아카이브의 경우 :

zipgrep --help  
usage: zipgrep [egrep_options] pattern zipfile [members...]
Uses unzip and egrep to search the zip members for a string or pattern.

tar 아카이브의 경우 :

zgrep --help
Usage: /bin/zgrep [OPTION]... [-e] PATTERN [FILE]...
Look for instances of PATTERN in the input FILEs, using their
uncompressed contents if they are compressed.

OPTIONs are the same as for 'grep'.

아카이브와 함께 작동하는 몇 가지 다른 도구가 있습니다. 출력물을 grep에 파이프하여 동일한 작업을 수행 할 수 있습니다.

zcat
zcat my.archive.zip | grep "some text"

또는 이러한 도구의 검색 기능을 사용할 수 있습니다

zless
zmore
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.