
많은 파일이 포함된 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를 사용할 수 있습니다 . 아마도 플래그를 사용하여 인수의 양을 적절한 양으로 제한하여 그러한 제한이 있는 경우 쉘이 처리할 수 있는 인수가 너무 많지 않도록 할 수도 있습니다.