Zlatan Omerovic
Zlatan Omerovic

Reputation: 4097

How to create an empty zip file in Ubuntu?

I have a scenario where I must first create a zip file, and after, when my files arrive from another location, they will be added into the zip.

This second part is done with the -u parameter:

zip -u {{project}}.zip {{file}}

--help for this command isn't quite helpful either:

user@host:~# zip --help
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
Zip 3.0 (July 5th 2008). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
  The default action is to add or replace zipfile entries from list, which
  can include the special name - to compress standard input.
  If zipfile and list are omitted, zip compresses stdin to stdout.
  -f   freshen: only changed files  -u   update: only changed or new files
  -d   delete entries in zipfile    -m   move into zipfile (delete OS files)
  -r   recurse into directories     -j   junk (don't record) directory names
  -0   store only                   -l   convert LF to CR LF (-ll CR LF to LF)
  -1   compress faster              -9   compress better
  -q   quiet operation              -v   verbose operation/print version info
  -c   add one-line comments        -z   add zipfile comment
  -@   read names from stdin        -o   make zipfile as old as latest entry
  -x   exclude the following names  -i   include only the following names
  -F   fix zipfile (-FF try harder) -D   do not add directory entries
  -A   adjust self-extracting exe   -J   junk zipfile prefix (unzipsfx)
  -T   test zipfile integrity       -X   eXclude eXtra file attributes
  -y   store symbolic links as the link instead of the referenced file
  -e   encrypt                      -n   don't compress these suffixes
  -h2  show more help

Upvotes: 7

Views: 4120

Answers (1)

YSC
YSC

Reputation: 40160

I have done it the dirty way:

Created an file called emptyfile with one byte in it (whitespace).

Then I added that file into the zip file:

zip -q {{project}}.zip emptyfile

To finally remove it:

zip -dq {{project}}.zip emptyfile

(if -q is omitted, you will get warning: zip warning: zip file empty)

This way I've got an empty zip file one can -update.

All that can be converted to a oneliner (idea from GaspardP):

echo | zip -q > {{project}}.zip && zip -dq {{project}}.zip -

Is there a more elegant way to do this?

Upvotes: 7

Related Questions