348 개의 zip 파일이 있는데 zip 파일 중 하나에있는 파일을 찾고 싶습니다. unzip -l
와일드 카드로 작동하지 않습니까?
모든 .zip
파일의 내용을 grep
나열하고 zip에 포함 된 모든 파일의 병합 된 목록을 통해 어떻게 목록을 표시 할 수 있습니까?
348 개의 zip 파일이 있는데 zip 파일 중 하나에있는 파일을 찾고 싶습니다. unzip -l
와일드 카드로 작동하지 않습니까?
모든 .zip
파일의 내용을 grep
나열하고 zip에 포함 된 모든 파일의 병합 된 목록을 통해 어떻게 목록을 표시 할 수 있습니까?
답변:
사용하는 zipinfo
것이 좋은 해결책입니다. 그러나 일반적으로 파일 목록에 명령을 적용하고 명령이 파일 목록을 허용하지 않을 때마다 for
루프를 사용할 수 있습니다 .
for file in *.zip; do
unzip -l "$file"
done \
| grep "\.zip\|setup"
검색중인 파일에 다음과 같이 공백이 있으면 your file
grep 정규 표현식에서와 같이 백 슬래시로 모든 공백을 이스케이프해야합니다 grep "\.zip\|your\ file"
.
unzip
습니다.
find
대신.
사용할 수 있습니다 zipinfo
. 기본 우분투 설치에 포함되어 있습니다. 자세한 내용은 매뉴얼 페이지 를 확인하십시오 .
예를 들어, setup
현재 디렉토리의 여러 zip 파일에서 패턴을 찾으 려면 다음 명령을 사용하십시오.
find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
caution: filename not matched: case1.zip
... caution: filename not matched: case348.zip
를 얻습니다 .
setup
과 같이 작동하지만 동일한 오류가 발생한다는 것입니다.zipinfo -l * | grep "setup"
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