criar zip baseado no conteúdo de uma lista de arquivos

2

Eu criei um arquivo com arquivos diff diff-files.txt tem mais de 6000 caminhos de arquivo nele. Agora quero criar um zip com base nesses arquivos.

Eu sei que posso compactar vários arquivos com:

zip diffedfiles.zip file1 folder1 -r

Mas isso não funcionará com mais de 6000 arquivos. Existe uma maneira de compactar com base no conteúdo de diff-files.txt ?

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

Algo parecido com isto?

    
por janw 16.12.2014 / 10:41

3 respostas

7

No Linux, você pode usar a opção - @:

-@ file lists. If a file list is specified as -@ [Not on MacOS], zip takes the list of input files from standard input instead of from the command line. For example,

          zip -@ foo

will store the files listed one per line on stdin in foo.zip.

Então, no seu caso, você deve ser capaz de fazer:

cat diff-files.txt | zip -@ diffedfiles.zip
    
por 16.12.2014 / 10:57
3

Entendi:

zip diffedfiles.zip $(cat diff-files.txt) -r
    
por 16.12.2014 / 10:54
0

Existem dois métodos que funcionam em todas as plataformas:

1.

zip output.zip -r . [email protected]

2.

cat filelist.txt | zip -@ - > output.zip

Esses métodos não são afetados pelos limites de tamanho da linha de comando.

    
por 12.03.2018 / 01:40