<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="../nih-man.css" type="text/css" media="all"/>
<title>ZIPTOOL(1)</title>
</head>
<body>
<table class="head">
<tr>
<td class="head-ltitle">ZIPTOOL(1)</td>
<td class="head-vol">General Commands Manual</td>
<td class="head-rtitle">ZIPTOOL(1)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">ziptool</code> — <span class="Nd">modify
zip archives</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<table class="Nm">
<tr>
<td><code class="Nm">ziptool</code></td>
<td>[<code class="Fl">-ceghnrst</code>] [<code class="Fl">-l</code>
<var class="Ar">length</var>] [<code class="Fl">-o</code>
<var class="Ar">offset</var>] <var class="Ar">zip-archive</var>
<code class="Cm">command</code> [<var class="Ar">command-args ...</var>]
[<code class="Cm">command</code> [<var class="Ar">command-args ...</var>]
...]</td>
</tr>
</table>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp"><code class="Nm">ziptool</code> modifies the zip archive
<var class="Ar">zip-archive</var> according to the
<var class="Ar">commands</var> given.</p>
<p class="Pp">Supported options:</p>
<dl class="Bl-tag">
<dt id="c"><a class="permalink" href="#c"><code class="Fl">-c</code></a></dt>
<dd>Check zip archive consistency when opening it.</dd>
<dt id="e"><a class="permalink" href="#e"><code class="Fl">-e</code></a></dt>
<dd>Error if archive already exists (only useful with
<code class="Fl">-n</code>).</dd>
<dt id="g"><a class="permalink" href="#g"><code class="Fl">-g</code></a></dt>
<dd>Guess file name encoding (for <code class="Cm">stat</code> command).</dd>
<dt id="h"><a class="permalink" href="#h"><code class="Fl">-h</code></a></dt>
<dd>Display help.</dd>
<dt id="l"><a class="permalink" href="#l"><code class="Fl">-l</code></a>
<var class="Ar">length</var></dt>
<dd>Only read <var class="Ar">length</var> bytes of archive. See also
<code class="Fl">-o</code>.</dd>
<dt id="n"><a class="permalink" href="#n"><code class="Fl">-n</code></a></dt>
<dd>Create archive if it doesn't exist. See also
<code class="Fl">-e</code>.</dd>
<dt id="o"><a class="permalink" href="#o"><code class="Fl">-o</code></a>
<var class="Ar">offset</var></dt>
<dd>Start reading input archive from <var class="Ar">offset</var>. See also
<code class="Fl">-l</code>.</dd>
<dt id="r"><a class="permalink" href="#r"><code class="Fl">-r</code></a></dt>
<dd>Print raw file name encoding without translation (for
<code class="Cm">stat</code> command).</dd>
<dt id="s"><a class="permalink" href="#s"><code class="Fl">-s</code></a></dt>
<dd>Follow file name convention strictly (for <code class="Cm">stat</code>
command).</dd>
<dt id="t"><a class="permalink" href="#t"><code class="Fl">-t</code></a></dt>
<dd>Disregard current file contents, if any. <i class="Em">Note</i>: use this
with care, it deletes all existing file contents when you modify the
archive.</dd>
</dl>
<section class="Ss">
<h2 class="Ss" id="Commands"><a class="permalink" href="#Commands">Commands</a></h2>
<p class="Pp">For all commands below, the index is zero-based. In other words,
the first entry in the zip archive has index 0.</p>
<p class="Pp">Supported commands and arguments are:</p>
<dl class="Bl-tag">
<dt id="add"><a class="permalink" href="#add"><code class="Cm">add</code></a>
<var class="Ar">name content</var></dt>
<dd>Add file called <var class="Ar">name</var> using the string
<var class="Ar">content</var> from the command line as data.</dd>
<dt id="add_dir"><a class="permalink" href="#add_dir"><code class="Cm">add_dir</code></a>
<var class="Ar">name</var></dt>
<dd>Add directory <var class="Ar">name</var>.</dd>
<dt id="add_file"><a class="permalink" href="#add_file"><code class="Cm">add_file</code></a>
<var class="Ar">name file_to_add offset len</var></dt>
<dd>Add file <var class="Ar">name</var> to archive, using
<var class="Ar">len</var> bytes from the file
<var class="Ar">file_to_add</var> as input data, starting at
<var class="Ar">offset</var>.</dd>
<dt id="add_from_zip"><a class="permalink" href="#add_from_zip"><code class="Cm">add_from_zip</code></a>
<var class="Ar">name archivename index offset len</var></dt>
<dd>Add file called <var class="Ar">name</var> to archive using data from
another zip archive <var class="Ar">archivename</var> using the entry with
index <var class="Ar">index</var> and reading <var class="Ar">len</var>
bytes from <var class="Ar">offset</var>.</dd>
<dt id="cat"><a class="permalink" href="#cat"><code class="Cm">cat</code></a>
<var class="Ar">index</var></dt>
<dd>Output file contents for entry <var class="Ar">index</var> to stdout.</dd>
<dt id="count_extra"><a class="permalink" href="#count_extra"><code class="Cm">count_extra</code></a>
<var class="Ar">index flags</var></dt>
<dd>Print the number of extra fields for archive entry
<var class="Ar">index</var> using <var class="Ar">flags</var>.</dd>
<dt id="count_extra_by_id"><a class="permalink" href="#count_extra_by_id"><code class="Cm">count_extra_by_id</code></a>
<var class="Ar">index extra_id flags</var></dt>
<dd>Print number of extra fields of type <var class="Ar">extra_id</var> for
archive entry <var class="Ar">index</var> using
<var class="Ar">flags</var>.</dd>
<dt id="delete"><a class="permalink" href="#delete"><code class="Cm">delete</code></a>
<var class="Ar">index</var></dt>
<dd>Remove entry at <var class="Ar">index</var> from zip archive.</dd>
<dt id="delete_extra"><a class="permalink" href="#delete_extra"><code class="Cm">delete_extra</code></a>
<var class="Ar">index extra_idx flags</var></dt>
<dd>Remove extra field number <var class="Ar">extra_idx</var> from archive
entry <var class="Ar">index</var> using <var class="Ar">flags</var>.</dd>
<dt id="delete_extra_by_id"><a class="permalink" href="#delete_extra_by_id"><code class="Cm">delete_extra_by_id</code></a>
<var class="Ar">index extra_id extra_index flags</var></dt>
<dd>Remove extra field number <var class="Ar">extra_index</var> of type
<var class="Ar">extra_id</var> from archive entry
<var class="Ar">index</var> using <var class="Ar">flags</var>.</dd>
<dt id="get_archive_comment"><a class="permalink" href="#get_archive_comment"><code class="Cm">get_archive_comment</code></a></dt>
<dd>Print archive comment.</dd>
<dt id="get_archive_flag"><a class="permalink" href="#get_archive_flag"><code class="Cm">get_archive_flag</code></a>
<var class="Ar">flag</var></dt>
<dd>Print state of archive flag <var class="Ar">flag</var>.</dd>
<dt id="get_extra"><a class="permalink" href="#get_extra"><code class="Cm">get_extra</code></a>
<var class="Ar">index extra_index flags</var></dt>
<dd>Print extra field <var class="Ar">extra_index</var> for archive entry
<var class="Ar">index</var> using <var class="Ar">flags</var>.</dd>
<dt id="get_extra_by_id"><a class="permalink" href="#get_extra_by_id"><code class="Cm">get_extra_by_id</code></a>
<var class="Ar">index extra_id extra_index flags</var></dt>
<dd>Print extra field <var class="Ar">extra_index</var> of type
<var class="Ar">extra_id</var> for archive entry
<var class="Ar">index</var> using <var class="Ar">flags</var>.</dd>
<dt id="get_file_comment"><a class="permalink" href="#get_file_comment"><code class="Cm">get_file_comment</code></a>
<var class="Ar">index</var></dt>
<dd>Get file comment for archive entry <var class="Ar">index</var>.</dd>
<dt id="get_num_entries"><a class="permalink" href="#get_num_entries"><code class="Cm">get_num_entries</code></a>
<var class="Ar">flags</var></dt>
<dd>Print number of entries in archive using <var class="Ar">flags</var>.</dd>
<dt id="name_locate"><a class="permalink" href="#name_locate"><code class="Cm">name_locate</code></a>
<var class="Ar">name flags</var></dt>
<dd>Find entry in archive with the filename <var class="Ar">name</var> using
<var class="Ar">flags</var> and print its index.</dd>
<dt id="rename"><a class="permalink" href="#rename"><code class="Cm">rename</code></a>
<var class="Ar">index name</var></dt>
<dd>Rename archive entry <var class="Ar">index</var> to
<var class="Ar">name</var>.</dd>
<dt id="replace_file_contents"><a class="permalink" href="#replace_file_contents"><code class="Cm">replace_file_contents</code></a>
<var class="Ar">index data</var></dt>
<dd>Replace file contents for archive entry <var class="Ar">index</var> with
the string <var class="Ar">data</var>.</dd>
<dt id="set_archive_comment"><a class="permalink" href="#set_archive_comment"><code class="Cm">set_archive_comment</code></a>
<var class="Ar">comment</var></dt>
<dd>Set archive comment to <var class="Ar">comment</var>.</dd>
<dt id="get_archive_flag~2"><a class="permalink" href="#get_archive_flag~2"><code class="Cm">get_archive_flag</code></a>
<var class="Ar">flag</var> <var class="Ar">value</var></dt>
<dd>Set archive flag <var class="Ar">flag</var> to
<var class="Ar">value</var>.</dd>
<dt id="set_extra"><a class="permalink" href="#set_extra"><code class="Cm">set_extra</code></a>
<var class="Ar">index extra_id extra_index flags value</var></dt>
<dd>Set extra field number <var class="Ar">extra_index</var> of type
<var class="Ar">extra_id</var> for archive entry
<var class="Ar">index</var> using <var class="Ar">flags</var> to
<var class="Ar">value</var>.</dd>
<dt id="set_file_comment"><a class="permalink" href="#set_file_comment"><code class="Cm">set_file_comment</code></a>
<var class="Ar">index comment</var></dt>
<dd>Set file comment for archive entry <var class="Ar">index</var> to string
<var class="Ar">comment</var>.</dd>
<dt id="set_file_compression"><a class="permalink" href="#set_file_compression"><code class="Cm">set_file_compression</code></a>
<var class="Ar">index method compression_flags</var></dt>
<dd>Set file compression method for archive entry <var class="Ar">index</var>
to <var class="Ar">method</var> using
<var class="Ar">compression_flags</var>. <i class="Em">Note</i>:
Currently, <var class="Ar">compression_flags</var> are ignored.</dd>
<dt id="set_file_encryption"><a class="permalink" href="#set_file_encryption"><code class="Cm">set_file_encryption</code></a>
<var class="Ar">index method password</var></dt>
<dd>Set file encryption method for archive entry <var class="Ar">index</var>
to <var class="Ar">method</var> with password
<var class="Ar">password</var>.</dd>
<dt id="set_file_mtime"><a class="permalink" href="#set_file_mtime"><code class="Cm">set_file_mtime</code></a>
<var class="Ar">index timestamp</var></dt>
<dd>Set file modification time for archive entry <var class="Ar">index</var>
to UNIX mtime <var class="Ar">timestamp</var>.</dd>
<dt id="set_file_mtime_all"><a class="permalink" href="#set_file_mtime_all"><code class="Cm">set_file_mtime_all</code></a>
<var class="Ar">timestamp</var></dt>
<dd>Set file modification time for all archive entries to UNIX mtime
<var class="Ar">timestamp</var>.</dd>
<dt id="set_password"><a class="permalink" href="#set_password"><code class="Cm">set_password</code></a>
<var class="Ar">password</var></dt>
<dd>Set default password for encryption/decryption to
<var class="Ar">password</var>.</dd>
<dt id="stat"><a class="permalink" href="#stat"><code class="Cm">stat</code></a>
<var class="Ar">index</var></dt>
<dd>Print information about archive entry <var class="Ar">index</var>.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Flags"><a class="permalink" href="#Flags">Flags</a></h2>
<p class="Pp">Some commands take flag arguments. Each character in the argument
sets the corresponding flag. Use 0 or the empty string for no flags.</p>
<p class="Pp">Supported flags are:</p>
<div class="Bd-indent">
<dl class="Bl-tag Bl-compact">
<dt id="ZIP_FL_ENC_CP437"><var class="Ar">4</var></dt>
<dd><a class="permalink" href="#ZIP_FL_ENC_CP437"><code class="Dv">ZIP_FL_ENC_CP437</code></a></dd>
<dt id="ZIP_FL_ENC_UTF_8"><var class="Ar">8</var></dt>
<dd><a class="permalink" href="#ZIP_FL_ENC_UTF_8"><code class="Dv">ZIP_FL_ENC_UTF_8</code></a></dd>
<dt id="ZIP_FL_NOCASE"><var class="Ar">C</var></dt>
<dd><a class="permalink" href="#ZIP_FL_NOCASE"><code class="Dv">ZIP_FL_NOCASE</code></a></dd>
<dt id="ZIP_FL_CENTRAL"><var class="Ar">c</var></dt>
<dd><a class="permalink" href="#ZIP_FL_CENTRAL"><code class="Dv">ZIP_FL_CENTRAL</code></a></dd>
<dt id="ZIP_FL_NODIR"><var class="Ar">d</var></dt>
<dd><a class="permalink" href="#ZIP_FL_NODIR"><code class="Dv">ZIP_FL_NODIR</code></a></dd>
<dt id="ZIP_FL_LOCAL"><var class="Ar">l</var></dt>
<dd><a class="permalink" href="#ZIP_FL_LOCAL"><code class="Dv">ZIP_FL_LOCAL</code></a></dd>
<dt id="ZIP_FL_ENC_RAW"><var class="Ar">r</var></dt>
<dd><a class="permalink" href="#ZIP_FL_ENC_RAW"><code class="Dv">ZIP_FL_ENC_RAW</code></a></dd>
<dt id="ZIP_FL_ENC_STRICT"><var class="Ar">s</var></dt>
<dd><a class="permalink" href="#ZIP_FL_ENC_STRICT"><code class="Dv">ZIP_FL_ENC_STRICT</code></a></dd>
<dt id="ZIP_FL_UNCHANGED"><var class="Ar">u</var></dt>
<dd><a class="permalink" href="#ZIP_FL_UNCHANGED"><code class="Dv">ZIP_FL_UNCHANGED</code></a></dd>
</dl>
</div>
</section>
<section class="Ss">
<h2 class="Ss" id="Archive_flags"><a class="permalink" href="#Archive_flags">Archive
flags</a></h2>
<p class="Pp"><code class="Cm">get_archive_flag</code> and
<code class="Cm">set_archive_flag</code> work on the following flags:</p>
<ul class="Bl-bullet Bd-indent Bl-compact">
<li id="create-or-keep-empty-file-for-archive"><a class="permalink" href="#create-or-keep-empty-file-for-archive"><code class="Dv">create-or-keep-empty-file-for-archive</code></a></li>
<li id="is-torrentzip"><a class="permalink" href="#is-torrentzip"><code class="Dv">is-torrentzip</code></a></li>
<li id="rdonly"><a class="permalink" href="#rdonly"><code class="Dv">rdonly</code></a></li>
<li id="want-torrentzip"><a class="permalink" href="#want-torrentzip"><code class="Dv">want-torrentzip</code></a></li>
</ul>
</section>
<section class="Ss">
<h2 class="Ss" id="Compression_Methods"><a class="permalink" href="#Compression_Methods">Compression
Methods</a></h2>
<p class="Pp">Some commands take compression method arguments. Supported methods
are:</p>
<ul class="Bl-bullet Bd-indent Bl-compact">
<li id="default"><a class="permalink" href="#default"><code class="Dv">default</code></a></li>
<li id="deflate"><a class="permalink" href="#deflate"><code class="Dv">deflate</code></a></li>
<li id="store"><a class="permalink" href="#store"><code class="Dv">store</code></a></li>
</ul>
</section>
<section class="Ss">
<h2 class="Ss" id="Encryption_Methods"><a class="permalink" href="#Encryption_Methods">Encryption
Methods</a></h2>
<p class="Pp">Some commands take encryption method arguments. Supported methods
are:</p>
<ul class="Bl-bullet Bd-indent Bl-compact">
<li id="none"><a class="permalink" href="#none"><code class="Dv">none</code></a></li>
<li id="AES-128"><a class="permalink" href="#AES-128"><code class="Dv">AES-128</code></a></li>
<li id="AES-192"><a class="permalink" href="#AES-192"><code class="Dv">AES-192</code></a></li>
<li id="AES-256"><a class="permalink" href="#AES-256"><code class="Dv">AES-256</code></a></li>
</ul>
</section>
</section>
<section class="Sh">
<h1 class="Sh" id="EXIT_STATUS"><a class="permalink" href="#EXIT_STATUS">EXIT
STATUS</a></h1>
<p class="Pp">The <code class="Nm">ziptool</code> utility exits 0 on
success, and >0 if an error occurs.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
<p class="Pp">Add a file called <span class="Pa">teststring.txt</span> to the
zip archive <span class="Pa">testbuffer.zip</span> with data “This is
a test.\n” where “\n” is replaced with a newline
character:</p>
<div class="Bd Pp Bd-indent Li">
<pre>ziptool testbuffer.zip add teststring.txt \"This is a test.\n\"</pre>
</div>
<p class="Pp">Delete the first file from the zip archive
<span class="Pa">testfile.zip</span>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>ziptool testfile.zip delete 0</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
ALSO</a></h1>
<p class="Pp"><a class="Xr" href="zipcmp.html">zipcmp(1)</a>,
<a class="Xr" href="zipmerge.html">zipmerge(1)</a>,
<a class="Xr" href="libzip.html">libzip(3)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp"><code class="Nm">ziptool</code> was added in libzip 1.1.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp"><span class="An">Dieter Baron</span>
<<a class="Mt" href="mailto:dillo@nih.at">dillo@nih.at</a>> and
<span class="An">Thomas Klausner</span>
<<a class="Mt" href="mailto:wiz@gatalith.at">wiz@gatalith.at</a>></p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">January 23, 2023</td>
<td class="foot-os">NiH</td>
</tr>
</table>
</body>
</html>