큰 zip 파일(>50GB)이 있고 명령줄에서 일부 파일을 추출하고 싶다고 가정해 보겠습니다.
파일을 얻으려면 다음 명령을 실행합니다.
unzip -l myfile.zip | grep "foo"
그러면 zip 항목 목록이 제공됩니다. grep 필터를 통과하는 파일을 어떻게 추출할 수 있습니까? 사용해 보았지만 xargs unzip -j
zip 항목에서 쓸모없는 정보를 정리해야 하기 때문에 좀 더 깔끔한 솔루션이 필요합니다.
답변1
스테판의 생각은 옳았다zip
추출하려는 파일 이름에 해당하는 와일드카드를 전달합니다 . 구문 분석된 출력은 unzip
헤더와 함께 제공되는 후행 행에 주의를 기울여야 함을 의미합니다.
다음과 같은 것을 사용하십시오:
unzip -j myfile.zip '*foo*'
주의 깊은쉘에서 와일드카드 인용.
grepping의 출력 라인을 따라 계속하는 경우 unzip
헤더와 트레일러를 제거하고 파일 이름 목록으로 줄입니다.
unzip -l myfile.zip | sed '1,3d; /--------- -------/d; $d'|cut -c31-