명령줄에서 .zip 아카이브의 파일을 선택적으로 추출합니다.

명령줄에서 .zip 아카이브의 파일을 선택적으로 추출합니다.

큰 zip 파일(>50GB)이 있고 명령줄에서 일부 파일을 추출하고 싶다고 가정해 보겠습니다.

파일을 얻으려면 다음 명령을 실행합니다.

unzip -l myfile.zip | grep "foo"

그러면 zip 항목 목록이 제공됩니다. grep 필터를 통과하는 파일을 어떻게 추출할 수 있습니까? 사용해 보았지만 xargs unzip -jzip 항목에서 쓸모없는 정보를 정리해야 하기 때문에 좀 더 깔끔한 솔루션이 필요합니다.

답변1

스테판의 생각은 옳았다zip추출하려는 파일 이름에 해당하는 와일드카드를 전달합니다 . 구문 분석된 출력은 unzip헤더와 함께 제공되는 후행 행에 주의를 기울여야 함을 의미합니다.

다음과 같은 것을 사용하십시오:

unzip -j myfile.zip '*foo*'

주의 깊은쉘에서 와일드카드 인용.

grepping의 출력 라인을 따라 계속하는 경우 unzip헤더와 트레일러를 제거하고 파일 이름 목록으로 줄입니다.

unzip -l myfile.zip | sed '1,3d; /---------                     -------/d; $d'|cut -c31-

관련 정보