A diferença é que -
comprimirá stdin
como se stdin
fosse o arquivo a ser compactado. -@
lerá uma lista de nomes de arquivos de stdin
e adicionará cada um desses arquivos ao arquivo. Os exemplos em página de manual ilustram a diferença (embora, por favor, não use o exemplo -@
, é quebrado e falhará em quaisquer nomes que contenham caracteres em IFS
como espaços):
Under Unix, this option can be used to powerful effect in conjunction with the find (1) command. For example, to archive all the C source files in the current directory and its subdirectories:
find . -name "*.[ch]" -print | zip source -@
e
zip also accepts a single dash ("-") as the name of a file to be compressed, in which case it will read the file from standard input, allowing zip to take input from another program. For example:
tar cf - . | zip backup -