1

У меня есть zip-архив с большим количеством файлов и открытым текстом со списком файлов (~ 10000 элементов), которые мне нужно извлечь из этого архива с помощью bash.

Каков наилучший способ выполнить эту операцию? Очевидным способом является запуск распаковать для каждой строки файла, но это выглядит очень медленно.

3 ответа3

2

Вместо того, чтобы запускать unzip для каждого файла, вы можете запускать весь список файлов, подавая в виде входных данных текстовый файл:

unzip -j MyZipFile.zip <<<textfile
0

Unzip поддерживает, чтобы указать, какие файлы для извлечения:

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

Но это не будет работать для 10000 предметов. Вы можете разбить ваш список файлов на куски по 100 и выполнить с ними разархивирование, это будет более быстрой реализацией, чем извлечение каждого файла для себя.

0

Вы можете использовать xargs с опцией -a для чтения его аргументов из файла. Возможно, также используйте флаг, чтобы ограничить количество аргументов до соответствующего количества, чтобы гарантировать, что не существует слишком большого количества для обработки оболочкой, если есть такое ограничение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .