Use a opção -@
para que zip
leia uma lista de arquivos de sua entrada padrão.
$ cat listOfFolders.txt | zip -r@ part1.zip
Eu tenho uma pasta que contém muitas pastas nela.
Eu não preciso zipar todos eles e tenho uma lista de pastas que precisam ser compactadas em um arquivo separado
A lista de pastas está no seguinte formato:
folder1 folder2 folder3...
Posso fazer algo assim (isso não funciona, mas não sei como transmitir os argumentos corretamente):
zip -r backup1.zip < listOfFolders.txt
zip backup1.zip -r@ < listOfFolders.txt
A opção r@
faz entradas de leitura de zip a partir de stdin.
Se você não quiser passar a lista de arquivos de um arquivo temporário listOfFolders.txt , podemos usar o grep para filtrar arquivos e passar resultados para compactar da seguinte maneira
grep -rl "<parent_folder_name>" <file/folder_name_regex> | zip backup1.zip -r@
(ou)
Como mencionado na resposta acima,
listOfFolders zip -r@ backup1.zip