Назад | Перейти на главную страницу

создать zip на основе содержимого списка файлов

Я создал файл с файлами различий diff-files.txt в нем 6000+ путей к файлам. Теперь я хочу создать zip-архив на основе этих файлов.

Я знаю, что могу заархивировать несколько файлов с помощью:

zip diffedfiles.zip file1 folder1 -r

Но это не сработает с 6000+ файлами. Есть ли способ заархивировать его на основе содержимого diff-files.txt?

zip diffedfiles.zip {diff-files.txt} -r

Что-то вроде этого?

В Linux вы можете использовать параметр - @:

- @ списки файлов. Если список файлов указан как - @ [Не в MacOS], zip берет список входных файлов из стандартного ввода, а не из командной строки. Например,

          zip -@ foo

сохранит файлы, перечисленные по одному в строке на stdin в foo.zip.

Итак, в вашем случае вы должны уметь:

cat diff-files.txt | zip -@ diffedfiles.zip

Понял:

zip diffedfiles.zip $(cat diff-files.txt) -r

На всех платформах работают два метода:

1.

zip output.zip -r . -i@filelist.txt

2.

zip -@ - < filelist.txt > output.zip

На эти методы не влияют ограничения на длину командной строки.