Я создал файл с файлами различий 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
На эти методы не влияют ограничения на длину командной строки.