Bash의 zip 아카이브에서 많은 파일을 추출하는 더 좋은 방법

Bash의 zip 아카이브에서 많은 파일을 추출하는 더 좋은 방법

많은 파일이 포함된 zip 아카이브와 bash를 사용하여 해당 아카이브에서 추출해야 하는 파일 목록(~10000개 항목)이 포함된 일반 텍스트 파일이 있습니다.

해당 작업을 수행하는 가장 좋은 방법은 무엇입니까? 분명한 방법은 파일의 각 줄에 대해 unzip을 실행하는 것이지만 매우 느린 것 같습니다.

답변1

각 파일에서 실행하는 대신 unzip일반 텍스트 파일을 입력으로 제공하여 전체 파일 목록에서 실행할 수 있습니다.

unzip -j MyZipFile.zip <<<textfile

답변2

Unzip은 추출할 파일을 지정하는 기능을 지원합니다.

unzip archive.zip file1.txt file2.txt file3.txt ...

그러나 이것은 10000개의 항목에는 작동하지 않습니다. 파일 목록을 100개 단위로 분할하고 unzip을 실행할 수 있습니다. 이는 각 파일을 추출하는 것보다 더 빠른 구현입니다.

답변3

-a파일에서 인수를 읽는 옵션 과 함께 xargs를 사용할 수 있습니다 . 아마도 플래그를 사용하여 인수의 양을 적절한 양으로 제한하여 그러한 제한이 있는 경우 쉘이 처리할 수 있는 인수가 너무 많지 않도록 할 수도 있습니다.

관련 정보