コマンドラインのマニュアル

Man » zip マニュアルオンライン - zip man ページの詳細なオンラインドキュメント

🌍
zip - ファイルをパッケージ化して圧縮(アーカイブ)します

構文

zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...] [-b path] [-n suffixes] [-t date]
[-tt date] [zipfile [file ...]] [-xi list]

zipcloak (別の man ページを参照)

zipnote (別の man ページを参照)

zipsplit (別の man ページを参照)

注:zip のコマンドライン処理は、長オプションをサポートし、すべてのオプションと引数をより一貫して処理するように変更されました。コマンドラインの一貫性のない動作に依存する古いコマンドラインは、動作しなくなる可能性があります。

説明

zip は、Unix、VMS、MSDOS、OS/2、Windows 9x/NT/XP、Minix、Atari、Macintosh、Amiga、および Acorn RISC OS 用の圧縮およびファイルパッケージ化ユーティリティです。これは、Unix コマンド [tar]({filename}../../tar)(1) と compress(1) の組み合わせに似ており、PKZIP (Phil Katz の MSDOS システム用 ZIP) と互換性があります。

zip アーカイブを解凍するためのコンパニオンプログラムは、unzip(1) です。zip と unzip(1) のプログラムは、PKZIP (PKZIP バージョン 4.6 までのほとんどの PKZIP 機能のサポート) で作成されたアーカイブで動作し、PKZIP と PKUNZIP は zip で作成されたアーカイブで動作します (ストリーミングされたアーカイブなど、いくつかの例外があります。ただし、zip ファイル標準の最近の変更により、互換性が向上する可能性があります)。zip バージョン 3.0 は PKZIP 2.04 と互換性があり、PKZIP 4.5 の Zip64 拡張機能もサポートしています。これにより、アーカイブだけでなくファイルも以前の 2 GB 制限(場合によっては 4 GB)を超えることができます。zip は、bzip2 ライブラリが zip のコンパイル時に含まれている場合、bzip2 圧縮もサポートします。PKUNZIP 1.10 は PKZIP 2.04 または zip 3.0 で作成されたファイルを抽出できません。ファイルを抽出するには、PKUNZIP 2.04g または unzip 5.0p1(またはそれ以降のバージョン)を使用する必要があります。

このページのセクションの末尾にある「例」を参照して、zip の一般的な使用例を参照してください。

大規模なアーカイブと Zip64。zip は、アーカイブに追加されるファイルが 4 GB を超える場合、Zip64 エントリを含むアーカイブが更新される場合、結果のアーカイブのサイズが 4 GB を超える場合、またはアーカイブ内のエントリの数が約 64K を超える場合に、Zip64 拡張機能を自動的に使用します。zip は、標準入力からストリーミングされるアーカイブにも Zip64 を使用します。これは、これらのアーカイブのサイズが事前にわかっていないためです。ただし、-fz- オプションを使用して、zip が PKZIP 2 と互換性のあるアーカイブを作成するように強制できます(Zip64 拡張機能が必要ない場合)。Zip64 拡張機能を使用するファイルを抽出するには、unzip 6.0 以降などの PKZIP 4.5 互換の unzip を使用する必要があります。

さらに、ストリーミングされたアーカイブ、標準の暗号化で暗号化されたエントリ、または pause オプションで作成された分割されたアーカイブは、データ記述子が使用されるため、PKZIP と互換性がない場合があります。PKZIP は、この記事の執筆時点でデータ記述子をサポートしていません(ただし、PKWare が公開している zip 標準の最近の変更により、zip が使用するデータ記述子形式に対するいくつかのサポートが含まれるようになりました)。


Mac OS X。以前の Mac バージョンには独自の zip ポートがありましたが、zip は Unix ポートの一部として Mac OS X をサポートしており、ほとんどの Unix 機能が適用されます。以下で「MacOS」という用語を使用する場合、通常は OS X よりも前の MacOS バージョンを指します。Unix Mac OS X ポートにおけるリソースフォークなどの一部の Mac OS 機能のサポートは、次回の zip リリースで提供される予定です。

zip と unzip について簡単に知りたい場合は、コマンドラインでパラメータを指定せずにそれぞれのコマンドを実行してください。

使用方法

このプログラムは、一連のファイルをパッケージ化して配布したり、ファイルをアーカイブしたり、使用されていないファイルやディレクトリを一時的に圧縮してディスクスペースを節約したりするのに役立ちます。

zip プログラムは、1 つ以上の圧縮されたファイルを、ファイルに関する情報(名前、パス、最終変更日時、保護、およびファイル整合性を検証するためのチェック情報)とともに、単一の zip アーカイブに格納します。単一のコマンドで、ディレクトリ構造全体を zip アーカイブにパックできます。テキストファイルの場合、圧縮率は 2:1 ~ 3:1 が一般的です。zip には 1 つの圧縮方法(deflation)があり、ファイルは圧縮せずに保存することもできます。(bzip2 のサポートが追加された場合、zip は bzip2 圧縮を使用して圧縮することもできますが、そのようなエントリを解凍するには、比較的新しい unzip が必要です。bzip2 圧縮が選択された場合、deflation がデフォルトの方法に置き換えられます。)zip は、圧縮する各ファイルについて、deflation、保存、または(bzip2 が選択されている場合)bzip2、保存のうち、最適なものを自動的に選択します。

コマンド形式。基本的なコマンド形式は次のとおりです。

zip オプション アーカイブ 入力パス 入力パス ...

ここで、アーカイブは新規または既存の zip アーカイブであり、入力パスはディレクトリまたはファイルパスであり、必要に応じてワイルドカードを含めることができます。既存の zip アーカイブの名前が指定された場合、zip は zip アーカイブ内の同じ名前のエントリ(アーカイブに保存されている相対名に一致する)を置き換えたり、新しい名前のエントリを追加したりします。たとえば、foo.zip が存在し、foo/file1 と foo/file2 を含んでいる場合、ディレクトリ foo にはファイル foo/file1 と foo/file3 が含まれている場合、次のコマンドを実行します。

zip -r foo.zip foo

または、より簡潔に

zip -r foo foo

これにより、foo.zip 内の foo/file1 が置き換えられ、foo/file3 が foo.zip に追加されます。この後、foo.zip には foo/file1、foo/file2、および foo/file3 が含まれ、foo/file2 は以前と同じままです。

したがって、zip コマンドが実行される前に、foo.zip には次が含まれているとします。

foo/file1 foo/file2

そして、ディレクトリ foo には次が含まれています。

file1 file3

その後、foo.zip には次が含まれます。

foo/file1 foo/file2 foo/file3

ここで、foo/file1 は置き換えられ、foo/file3 は新しく追加されたものです。

-@ ファイルリスト。ファイルリストが -@ [Mac OS 上では利用不可] として指定された場合、zip はコマンドラインからではなく、標準入力から入力ファイルの一覧を取得します。たとえば、

zip -@ foo

は、標準入力から1行ずつファイル名を読み込み、それらをfoo.zipに格納します。

Unixの下では、このオプションはfindコマンドと組み合わせて強力に使用できます。たとえば、現在のディレクトリとそのサブディレクトリ内のすべてのCソースファイルをアーカイブするには、次のようにします。

find . -name "*.[ch]" -print | zip source -@

(パターンは、シェルによる展開を防ぐために引用符で囲む必要があります)。

ストリーミング入力と出力。zipは、ファイル名として単一のハイフン(“-”)も受け入れます。この場合、zipファイルは標準出力に書き込まれ、その出力は別のプログラムにパイプできます。たとえば、

zip -r - . | dd of=/dev/nrst0 obs=16k

は、現在のディレクトリのzip出力を、指定されたブロックサイズでテープに直接書き込み、バックアップの目的で使用します。

^ ipは、圧縮するファイルの名前として単一のハイフン(“-”)も受け入れます。この場合、ファイルは標準入力から読み込まれ、zipが別のプログラムからの入力を受け取ることができます。たとえば、

tar cf - . | zip backup

は、現在のディレクトリをバックアップするために、tarコマンドの出力を圧縮します。これは通常、前の-rオプションを使用した場合よりも優れた圧縮を実現します。これは、zipがファイル間の冗長性を利用できるためです。バックアップは、次のコマンドを使用して復元できます。

unzip -p backup | tar xf

^ ipファイル名が指定されておらず、標準出力がターミナルでない場合、zipはフィルターとして機能し、標準入力を標準出力に圧縮します。たとえば、

tar cf - . | zip | dd of=/dev/nrst0 obs=16k

は、次と同等です。

tar cf - . | zip - - | dd of=/dev/nrst0 obs=16k

このように作成されたzipアーカイブは、unzipパッケージで提供されているfunzipプログラム、またはgzipパッケージで提供されているgunzipを使用して抽出できます(ただし、一部のgunzipは、zipがZip64拡張機能を使用した場合、これをサポートしない場合があります)。たとえば、

dd if=/dev/nrst0 ibs=16k | funzip | tar xvf

ストリームはファイルに保存し、unzipを使用することもできます。

Zip64拡張機能が有効になっており、大きなファイルとアーカイブをサポートするようにzipがフィルターとして使用されている場合、zipはPKZIP 4.5以降と互換性のあるunzipで読み取る必要があるZip64アーカイブを作成します。これは、現在のzip標準(PKWARE AppNote)で定義されているzipファイル構造におけるあいまいさを回避するためです。この標準では、データが書き込まれる前にZip64を使用するかどうかを決定する必要がありますが、ストリームの場合、データのサイズは事前にわかっていません。データが4 GB未満であることがわかっている場合は、-fz-オプションを使用してZip64の使用を回避できますが、実際にZip64が必要な場合、zipはエラーで終了します。zip 3およびunzip 6以降は、Zip64エントリを含むアーカイブを読み取ることができます。また、zipは、アーカイブエントリをコピーする場合(-U--copy)オプションを参照)に、不要な場合はZip64拡張機能を削除します。

出力を別のファイルにリダイレクトする場合は、すべてのオプション(-xを含む)がリダイレクトの前に配置されていることに注意してください。たとえば、

zip archive "*.h" "*.c" -x donotinclude.h orthis.h > tofile

Zipファイル。既存のzipアーカイブを変更する場合、zipは新しい内容を含む一時ファイルを作成し、新しいバージョンの作成プロセスがエラーなしで完了した場合にのみ、古いファイルを置き換えます。

zipアーカイブの名前が拡張子を含まない場合、拡張子.zipが追加されます。名前がすでに.zip以外の拡張子を含む場合、既存の拡張子は変更されません。ただし、分割アーカイブ(複数のファイルに分割されたアーカイブ)では、最後の分割ファイルに.zip拡張子が必要です。

ファイルのスキャンと読み込み。zipが開始されると、必要に応じて処理するファイルをスキャンします。このスキャンに5秒以上かかる場合、zipは「ファイルの読み込み中」というメッセージを表示し、2秒ごとまたは処理されたエントリごとに進捗状況を表示します。2秒以上の間隔でドットが表示される場合は、各ファイルを見つけるのに時間がかかっており、遅いネットワーク接続などが原因である可能性があります。(実際には、最初のファイルスキャンは、ディレクトリのスキャンとその後に続くソートという2つのステップで構成され、これらの2つのステップはドットで区切られます。既存のアーカイブを更新する場合、既存のファイルのスキャンと新しいファイルのスキャンの間にもドットで区切られます。)ファイルの読み込み中のドットは、-dsドットサイズオプションによって制御されませんが、-q quietオプションによってドットの表示をオフにすることができます。-sf show filesオプションを使用して、ファイルをスキャンしてスキャンされたファイルリストを取得できますが、実際には処理は行われません。

zipがファイルを読み込めない場合、警告を発しますが、処理を続行します。-MMオプション以下を参照して、zipが一致しないパターンと読み取り不可のファイルをどのように処理するかを確認してください。一部のファイルがスキップされた場合、zip操作の最後に、読み取られたファイル数とスキップされたファイル数を示す警告が表示されます。

コマンドモード。zipは現在、外部モードと内部モードという2つの異なるタイプのコマンドモードをサポートしています。外部モード(add、update、freshen)は、ファイルシステム(および既存のアーカイブ)からファイルを読み取りますが、内部モード(delete、copy)は、既存のアーカイブ内のエントリのみを操作します。

add

既存のエントリを更新し、新しいファイルを追加します。アーカイブが存在しない場合は、作成します。これはデフォルトのモードです。

update (-u)

ファイルシステム上の新しいファイルがある場合に既存のエントリを更新し、新しいファイルを追加します。アーカイブが存在しない場合は、警告を発してから新しいアーカイブを作成します。

freshen (-f)

ファイルシステム上の新しいファイルがある場合に、アーカイブの既存のエントリを更新します。アーカイブに新しいファイルは追加されません。

delete (-d)

既存のアーカイブ内のエントリを選択して削除します。

copy (-U)

既存のアーカイブ内のエントリを選択して、新しいアーカイブにコピーします。この新しいモードはupdateに似ていますが、コマンドラインのパターンは、ファイルシステムからではなく、既存のアーカイブ内のエントリを選択し、--outオプションを使用して、結果のアーカイブを新しいファイルに書き込み、元のアーカイブは変更せずに残します。


新しいファイル同期オプション(-FS)も、実質的には新しいモードと見なされますが、これは更新操作と似ています。 このモードは、アーカイブとOS上のファイルを同期させ、OSファイルのファイル時間またはサイズが異なる場合にのみアーカイブ内のファイルを置き換え、新しいファイルを追加し、OSに一致するファイルが存在しない場合にアーカイブからエントリを削除します。このモードはアーカイブからエントリを削除する可能性があるため、アーカイブのバックアップコピーを作成することを検討してください。

差分アーカイブの作成については、-DFも参照してください。

詳細については、以下の各オプションの説明と、例については「例」セクションを参照してください。

アーカイブを分割できます。zipバージョン3.0以降では、分割アーカイブを作成できます。分割アーカイブは、複数のファイルに分割された標準のzipアーカイブです。(ただし、分割アーカイブは単に複数の部分に分割されたアーカイブではなく、エントリのオフセットは各分割の開始に基づいて計算されることに注意してください。これらの部分を連結すると、これらのオフセットが無効になりますが、通常はunzipで処理できます。zipは、-FF修正オプションを使用してオフセットを修正しない限り、そのような結合されたアーカイブを処理することを拒否します。)

分割アーカイブの1つの用途は、大きなアーカイブを複数のリムーバブルメディアに保存することです。20個の分割ファイルを持つ分割アーカイブの場合、ファイル名は通常(アーカイブ名をARCHIVEに置き換えて)ARCHIVE.z01、ARCHIVE.z02、...、ARCHIVE.z19、ARCHIVE.zipとなります。最後のファイルは.zipファイルであることに注意してください。対照的に、スパンドアーカイブは、通常はフロッピーディスクを使用し、ボリュームラベルを使用してディスク番号を保存する、元のマルチディスクアーカイブです。zipは分割アーカイブをサポートしていますが、スパンドアーカイブはサポートしていません。ただし、適切なサイズの分割アーカイブをスパンドアーカイブに変換する手順が存在します。逆も同様で、スパンドアーカイブの各ファイルを順番にコピーして、上記の名前のファイルを作成することで、分割アーカイブを作成できます。

-sを使用して、分割サイズを設定し、分割アーカイブを作成します。サイズは数字で指定し、オプションでk(KB)、m(MB)、g(GB)、またはt(TB)のいずれかを付加します(デフォルトはmです)。-spオプションを使用して、たとえばリムーバブルメディアを交換するために、zipが分割処理の間に一時停止するようにすることができますが、-sと-spの両方の説明と警告をよく読んでください。

zipは分割アーカイブを更新しませんが、zipは新しいオプション-O(--output-fileまたは--out)を提供し、分割アーカイブを更新して新しいアーカイブに保存できるようにします。たとえば、

zip inarchive.zip foo.c bar.c --out outarchive.zip

は、アーカイブinarchive.zip(分割されている場合でも)を読み取り、ファイルfoo.cとbar.cを追加し、結果のアーカイブをoutarchive.zipに書き込みます。inarchive.zipが分割されている場合、outarchive.zipは同じ分割サイズをデフォルトで使用します。outarchive.zipおよび作成される分割ファイルがすでに存在する場合、これらは警告なしに常に上書きされることに注意してください。これは将来変更される可能性があります。

Unicode。zip標準では、アーカイブ内のパスを特定の文字セットを使用して保存することを要求していますが、実際にはzipはアーカイブ内のパスをローカルの文字セットで保存しています。これにより、アーカイブが1つの文字セットを使用して作成または更新され、別の文字セットを使用するシステムで抽出された場合に問題が発生します。Unicodeサポートが有効になっているプラットフォームでコンパイルされた場合、zipは標準のローカルパスに加えて、パスのUTF-8翻訳を保存します。これにより、パスを保存するための共通のユニバーサル文字セットが提供され、Unicodeをサポートする他のシステムでこれらのパスを完全に抽出したり、Unicodeをサポートしていないシステムで可能な限り一致させたりできるようになります。


Win32 システムでは、パスが内部的に Unicode として保存され、ローカル文字セットで表現される場合、ローカル文字セットのディレクトリスキャン中に、一部のパスがスキップされる可能性があります。Unicode をサポートする zip は、これらのパスを読み込んで保存できます。ただし、Win 9x システムおよび FAT ファイルシステムは、Unicode を完全にサポートしていません。

Win32 や Unix などのコンソールウィンドウでは、各オペレーティングシステムが文字セットを切り替えて表示するため、すべての文字が正確に表示されない場合があります。ただし、必要なフォントがロードされていれば、ディレクトリナビゲーションツールは正しいパスを表示します。

コマンドライン形式。このバージョンの zip は、更新されたコマンドライン処理と長いオプションのサポートを提供します。

短いオプションは次の形式をとります。

-s[-][s[-]...][value][=value][ value]

ここで、s は 1 つまたは 2 つの文字の短いオプションです。値を受け取る短いオプションは、引数の最後に来て、その後のすべてのものが値として扱われます。オプションを否定できる場合、オプションの直後に "-" が付くと、そのオプションが否定されます。短いオプションは、別々の引数として与えることもできます。

-s[-][value][=value][ value] -s[-][value][=value][ value] ...

短いオプションは、一般に、同じ引数の一部として、または次の引数として値を受け取ります。オプションの "=" もサポートされています。したがって、

-ttmmddyyyy

と

-tt=mmddyyyy

と

-tt mmddyyyy

はすべて機能します。-x オプションと -i オプションは値のリストを受け入れ、以下に説明するわずかに異なる形式を使用します。-x オプションと -i オプションを参照してください。

長いオプションは次の形式をとります。

--longoption[-][=value][ value]

ここで、オプションは "--" で始まり、複数文字の名前を持ち、オプションがサポートしている場合は、末尾に "-" を付けてオプションを否定できる (オプションがサポートしている場合) か、値 (オプション引数) は、"=" を付けて指定できます (スペースなし)。値は、引数の後にも続けることができます。したがって、

--before-date=mmddyyyy

と

--before-date mmddyyyy

はどちらも機能します。

長いオプション名は、最も短い一意のアブリアベーションに短縮できます。長いオプションをサポートするオプションについては、オプションの説明を参照してください。混乱を避けるために、否定可能なオプションで埋め込まれた "-" をアブリアベーションに使用する場合は、それを否定する予定がある場合は、末尾の "-" で使用しないでください (パーサーは、末尾の "-" (たとえば、--some-option を --some- としてオプションとして使用する場合) を名前の一部としてではなく、否定の "-" として解釈します)。これは将来、--someto の最後の "-" を強制的に否定するように変更される可能性があります。


オプション

-a
--ascii
[EBCDIC を使用するシステム] ファイルを ASCII 形式に変換します。

-A
--adjust-sfx
自己解凍実行可能アーカイブを調整します。自己解凍実行可能アーカイブは、SFX スタブを既存のアーカイブの先頭に追加することで作成されます。-A オプションは、アーカイブ内に保存されているエントリのオフセットを、この「プレアンブル」データに合わせて調整するように zip に指示します。

注: Amiga 用の自己解凍アーカイブは特別なケースです。現在、Amiga 版の zip のみが、これらを破損することなく調整または更新できます。-J を使用して SFX スタブを削除すると、他の更新を実行できます。

-AC
--archive-clear
[WIN32] アーカイブが作成されたら(-T が使用されている場合、推奨されます)、処理されたファイルのアーカイブビットをクリアします。警告: 一度ビットをクリアすると、クリアされます。-sf show files オプションを使用して、処理されたファイルのリストを保存し、アーカイブ操作を繰り返す必要がある場合に備えてください。また、-MM must match オプションの使用も検討してください。-DF を使用して、より優れた方法でインクリメンタルバックアップを実行できる場合があります。

-AS
--archive-set
[WIN32] アーカイブビットが設定されているファイルのみを含めます。-AS を使用する場合、ディレクトリは保存されません。ただし、デフォルトでは、エントリのパス(ディレクトリを含む)が通常どおり保存され、ほとんどの解凍プログラムでディレクトリを再作成するために使用できます。

アーカイブビットは、ファイルが変更されたときにオペレーティングシステムによって設定されます。-AC と -AS を組み合わせることで、インクリメンタルバックアップ機能を実装できます。ただし、他のアプリケーションがアーカイブビットを変更する可能性があるため、これは変更されたファイルを示す信頼できる指標ではない場合があります。インクリメンタルバックアップを作成する代替方法として、-t を使用してファイルの日付を使用する方法がありますが、これでは、アーカイブされているディレクトリにコピーされた古いファイルは検出できません。-DF を使用して差分アーカイブを作成することもできます。

-B
--binary
[VM/CMS および MVS] ファイルをバイナリとして読み込むように強制します(デフォルトはテキストです)。

-Bn    [TANDEM] 編集/Enscribe 形式オプションを n で設定します。n はビットで定義されます。
ビット 0: 区切り文字を追加しません (編集/Enscribe)
ビット 1: 区切り文字として CR/LF ではなく LF を使用します (編集/Enscribe)
ビット 2: レコードを最大レコード長までスペースで埋めます (Enscribe)
ビット 3: 最後のスペースを削除します (Enscribe)
ビット 8: 構造化されていないファイルに対して 30K (拡張) の大きな読み込みを強制します。

-b path
--temp-path path
指定されたパスを一時的な zip アーカイブに使用します。例:

zip -b /tmp stuff *

これにより、一時的な zip アーカイブが /tmp ディレクトリに配置され、stuff.zip が現在のディレクトリにコピーされます。このオプションは、既存のアーカイブを更新し、この古いアーカイブを含むファイルシステムに、古いアーカイブと新しいアーカイブの両方を同時に保存できるだけの十分なスペースがない場合に役立ちます。また、一部のストリーミングのシナリオで、データ記述子の必要性を回避するために役立つ場合があります。ただし、このオプションを使用すると、zip はアーカイブファイルを宛先ファイルシステムにコピーするために、追加の時間を要する場合があります。

-c
--entry-comments

各ファイルに一行のコメントを追加します。ファイル操作(追加、更新)を最初に行い、その後、ユーザーに各ファイルのコメントの入力を求めます。コメントを入力してリターンキーを押すか、またはコメントを付けない場合はリターンキーのみを押します。

-C
--preserve-case
[VMS] VMSでは大文字と小文字を区別して保存します。このオプションを否定すると(-C-)、すべて小文字に変換されます。

-C2
--preserve-case-2
[VMS] VMSのODS2では大文字と小文字を区別して保存します。このオプションを否定すると(-C2-)、すべて小文字に変換されます。

-C5
--preserve-case-5
[VMS] VMSのODS5では大文字と小文字を区別して保存します。このオプションを否定すると(-C5-)、すべて小文字に変換されます。

-d
--delete

ZIPアーカイブからエントリを削除します。たとえば:

zip -d foo foo/tom/junk foo/harry/\* \*.o

これにより、エントリfoo/tom/junk、foo/harry/で始まるすべてのファイル、および.oで終わるすべてのファイル(任意のパス)が削除されます。シェルによるファイル名展開をバックスラッシュで無効にしているため、ZIPはアスタリスクを認識し、ZIPアーカイブの内容に一致させることができます。これは、現在のディレクトリの内容に一致させるのとは異なります。(バックスラッシュはMSDOSベースのプラットフォームでは使用されません。)引用符を使用してアスタリスクをエスケープすることもできます。

zip -d foo foo/tom/junk "foo/harry/*" "*.o"

アスタリスクをエスケープしない場合、システムがワイルドカードを展開する場合、アスタリスクが現在のディレクトリ内のファイルの一覧に変換され、その一覧がアーカイブからエントリを削除するために使用される可能性があります。

MSDOSでは、-dはZIPアーカイブ内の名前との一致時に大文字と小文字を区別します。これは、ファイル名がMSDOSシステムでPKZIPによってZIPされた場合に、ファイル名を大文字で入力する必要があることを意味します。(パスが大文字と小文字を区別しないシステムで大文字と小文字を区別しないようにすることも検討しましたが、アーカイブは大文字と小文字を区別するシステムから作成された可能性があり、アーカイブにはBarとbarという異なるファイルが含まれている可能性があります。)ただし、新しいオプション-icを使用して、アーカイブ内の大文字と小文字を無視できます。

-db
--display-bytes

ZIP処理されたバイト数と残りのバイト数を表示します。

-dc
--display-counts

ZIP処理されたエントリ数と残りのエントリ数を表示します。

-dd
--display-dots

各エントリがZIP処理されている間、ドットを表示します(独自の進捗インジケーターを持つポートを除く)。-dsオプションでドットのサイズを設定できます。デフォルトでは、10MBごとの入力ファイルに対してドットが表示されます。-vオプションもドットを表示します(以前はより高い頻度でしたが、現在は-vもデフォルトで10MBです)。この頻度は-dsオプションで制御されます。

-df
--datafork
[MacOS] ZIPアーカイブに含めるファイルはデータフォークのみとします。これにより、ファイルを異種のオペレーティングシステムにエクスポートできます。リソースフォークはすべて無視されます。

-dg
--display-globaldots

各ファイルではなく、アーカイブ全体の進捗状況を示すドットを表示します。コマンドは次のとおりです。

zip -qdgds 10m

ほとんどの出力をオフにし、10MB ごとにドットを表示します。

-ds サイズ
--dot-size サイズ
表示するドットごとに処理する入力ファイルの量を設定します。ドットの表示を有効にするには、-dd を使用します。このオプションを設定すると、-dd が暗黙的に設定されます。サイズは nm の形式で指定します。n は数値、m は乗数です。現在、m は k (KB)、m (MB)、g (GB)、または t (TB) にすることができます。したがって、n が 100 で m が k の場合、サイズは 100k、つまり 100 KB になります。デフォルトは 10 MB です。

-v オプションもドットを表示し、現在はデフォルトで 10 MB になっています。このレートもこのオプションで制御されます。サイズを 0 にすると、ドットはオフになります。

このオプションは、zip が入力ファイルをスキャンするときに表示される「ファイルのスキャン」メッセージのドットを制御しません。このドットのサイズは、2 秒または固定数のエントリのいずれか長い方で決定されます。

-du
--display-usize
各エントリの圧縮されていないサイズを表示します。

-dv
--display-volume
既存のアーカイブを読み書きする場合、各エントリが読み込まれているディスク番号を表示します。

-D
--no-dir-entries
zip アーカイブ内にディレクトリのエントリを作成しません。ディレクトリのエントリはデフォルトで作成され、その属性が zip アーカイブに保存されます。環境変数 ZIPOPT を使用して、デフォルトのオプションを変更できます。たとえば、Unix 上の sh では、次のようにします。

ZIPOPT="-D"; export ZIPOPT

(ZIPOPT 変数は、-i や -x などのオプションにも使用でき、新しいオプション形式が詳細に説明されています。また、複数のオプションを含めることもできます。)-D オプションは、-x "*/" の省略形ですが、後者は以前は ZIPOPT 環境変数でデフォルトとして設定できませんでした。これは、ZIPOPT の内容がコマンド行の先頭近くに挿入され、ファイルリストは行の末尾になければならないためです。

このバージョンの zip では、次の形式の -x および -i オプションを ZIPOPT で使用できます。

-x ファイル ファイル ... @

ここで、@(引数が @ のみの場合)はリストを終了します。

-DF
--difference-archive
元のアーカイブが作成された時点から、すべての新規および変更されたファイルを含むアーカイブを作成します。これを行うには、入力ファイルリストと現在のディレクトリが、元の zip 操作中に使用されたものと同じである必要があります。

たとえば、既存のアーカイブが次を使用して作成された場合

zip -r foofull .

bar ディレクトリから、次のコマンド

zip -r foofull . -DF --out foonew

bar ディレクトリから実行すると、foofull にないファイルと、ファイルサイズまたはファイル時刻が foofull のファイルと一致しないファイルのみを含むアーカイブ foonew が作成されます。

タイムゾーン環境変数 TZ は、このオプションが正しく機能するように、ローカルのタイムゾーンに合わせて設定する必要があります。元のアーカイブが作成されてからタイムゾーンが変更された場合、時刻が一致しないファイルがすべて含まれてしまう可能性があります。

ディレクトリをバックアップする 1 つの方法は、ディレクトリの内容の通常のアーカイブを作成して完全なバックアップを作成し、次にこのオプションを使用して増分バックアップを作成することです。

-e
--encrypt
zip アーカイブの内容をパスワードで暗号化します。パスワードはターミナルで入力するように求められます(これはエコーされません。標準エラーが tty でない場合、zip はエラーで終了します)。パスワードのプロンプトは繰り返され、ユーザーが入力ミスをしないようにします。

-E
--longnames
[OS/2] ファイル名として、.LONGNAME拡張属性(存在する場合)を使用します。

-f
--freshen
zipアーカイブ内の既存のエントリを、アーカイブ内のバージョンよりも新しい場合にのみ置き換えます。-uオプション(更新)とは異なり、これはまだzipアーカイブに存在しないファイルは追加しません。例:

zip -f foo

このコマンドは、元のzipコマンドが実行されたのと同じディレクトリから実行する必要があります。zipアーカイブに保存されているパスは常に相対パスであるためです。

-f、-u、および-oオプションを正しく機能させるには、環境変数TZをローカルタイムゾーンに従って設定する必要があります。

その理由はやや複雑ですが、Unix形式のファイル時刻(常にGMT)と他のほとんどのオペレーティングシステム(常にローカル時間)との違い、およびこれらを比較する必要があることに起因します。TZ値の一般的な例は、``MET-1MEST``(「サマータイム」または夏時間調整付きの中央ヨーロッパ時間)です。

形式はTTThhDDDで、TTTはMETのようなタイムゾーン、hhはGMTとローカル時間の差(上記のように-1など)、DDDは夏時間が有効なときのタイムゾーンです。夏時間がない場合は、DDDを省略してください。米国東部時間帯の場合はEST5EDTです。

-F
--fix
-FF
--fixfix
zipアーカイブを修正します。-Fオプションは、アーカイブの一部が欠落している場合に利用できますが、比較的整合性のとれた中央ディレクトリが必要です。入力アーカイブは通常どおりスキャンされますが、zipはいくつかの問題を無視します。結果として得られるアーカイブは有効であるはずですが、不整合なエントリはすべて除外されます。

-FFのように2重にした場合、アーカイブは最初からスキャンされ、zipはアーカイブメンバー間の境界を識別するために特別な署名を検索します。-Fオプションは、アーカイブがそれほど損傷していない場合に、より信頼性が高いため、最初にこのオプションを試してください。

アーカイブが損傷しすぎているか、末尾が切り捨てられている場合は、-FFを使用する必要があります。これはzip 2.32からの変更であり、-Fオプションは切り捨てられたアーカイブを読み取ることができました。-Fオプションは現在、軽微な損傷のあるアーカイブをより確実に修正し、-FFオプションは、以前は-Fで修正できたアーカイブを修正するために必要です。

どちらのオプションも、ASCIIモードではなくバイナリモードで誤って転送されたアーカイブを復元することはありません。修正後、unzipの-tオプションは、いくつかのファイルにCRCエラーがあることを示す場合があります。これらのファイルは復元できません。zipの-dオプションを使用して、これらのファイルをアーカイブから削除できます。

-FFは、アーカイブに、圧縮なしでアーカイブに保存された埋め込みzipアーカイブが含まれている場合、修正が困難になる場合があります。また、損傷によっては、埋め込みアーカイブのエントリをアーカイブ自体ではなく見つける場合があります。最初に-Fを試してください。これにはこの問題はありません。

修正コマンドの形式が変更されました。たとえば、破損したアーカイブ foo.zip を修正するには、次のようにします。

zip -F foo --out foofix

これにより、アーカイブ内のエントリを通常どおり読み込み、正常なエントリを新しいアーカイブ foofix.zip にコピーしようとします。 これがうまくいかない場合(アーカイブが切り捨てられている場合、またはアーカイブ内にあることがわかっているエントリが欠落している場合)、次を試してください。

zip -FF foo --out foofixfix

そして、その結果のアーカイブを -F オプションで作成されたアーカイブと比較します。 -FF オプションは、一貫性のないアーカイブを作成する可能性があります。 破損状況に応じて、-F オプションを使用して、そのアーカイブを修正できます。

分割アーカイブで、一部の分割ファイルが欠落している場合、最後の分割ファイル(.zip ファイル)がある場合は、-F オプションを使用してアーカイブを修正できます。 このファイルが欠落している場合は、-FF オプションを使用してアーカイブを修正する必要があります。このオプションを使用すると、アーカイブの分割ファイルを尋ねられます。

現在、修正オプションでは、不良なチェックサムを持つエントリや、その他の方法で破損したエントリを回復することはできません。

-FI
--fifo [Unix]
通常、zip は遭遇した FIFO(名前付きパイプ)の読み込みをスキップします。zip が FIFO からデータを読み込もうとするとハングする可能性があるためです。 このオプションは、zip が見つけたすべての FIFO の内容を読み取るように指示します。
-FS
--filesync
アーカイブの内容を OS 側のファイルと同期します。 通常、アーカイブが更新されると、新しいファイルが追加され、変更されたファイルが更新されますが、OS に存在しなくなったファイルはアーカイブから削除されません。 このオプションは、新しいモードを有効にします。このモードでは、アーカイブ内のエントリがファイルシステムに対してチェックされます。 エントリのファイル時間とファイルサイズが OS ファイルと一致する場合、エントリは古いアーカイブからコピーされます。 OS ファイルが変更された場合、エントリは読み取られて圧縮されます。 アーカイブ内のエントリが OS 上のファイルと一致しない場合、そのエントリは削除されます。 このオプションを有効にすると、既存のエントリがコピーされるため、既存のアーカイブを更新する `-FS` を使用すると、新しいアーカイブを作成するよりもはるかに高速に更新できます。 また、`-u` を使用してアーカイブを更新することも検討してください。

このオプションが機能するためには、アーカイブは作成されたのと同じディレクトリから更新する必要があり、相対パスが一致するようにします。 コピーされるファイルが少ない場合は、新しいアーカイブを作成する方が高速になる場合があります。

^ Z 環境変数は、このオプションを正しく機能させるために、ローカルのタイムゾーンに合わせて設定する必要があります。 元のアーカイブが作成されてからタイムゾーンが変更された場合、一致する時間がないため、すべてのファイルが再圧縮される可能性があります。

このオプションはアーカイブからファイルを削除します。 元のアーカイブを保存する必要がある場合は、アーカイブのコピーを作成するか、--out オプションを使用して、更新されたアーカイブを新しいファイルに出力します。 遅い場合がありますが、新しいアーカイブ名で新しいアーカイブを作成することの方が安全であり、アーカイブと OS のパス間の不一致を回避し、推奨されます。


-g
--grow

指定された zip アーカイブにファイルを追加します (新しいアーカイブを作成する代わりに)。 この操作が失敗した場合、zip はアーカイブを元の状態に復元しようとします。 復元が失敗した場合、アーカイブが破損する可能性があります。 このオプションは、既存のアーカイブが存在しない場合、または少なくとも 1 つのアーカイブのメンバーを更新または削除する必要がある場合には無視されます。

-h
-?
--help

zip のヘルプ情報を表示します (引数なしで zip を実行した場合にも表示されます)。

-h2
--more-help

より詳細なヘルプを表示します。コマンドラインの形式、パターンマッチング、およびその他の曖昧なオプションについて説明します。

-i files
--include files

指定されたファイルのみを含めます。

zip -r foo . -i \*.c

これは、現在のディレクトリとそのサブディレクトリにある、末尾が .c で終わるファイルのみを含めます。 (PKZIP ユーザー向け: 同等のコマンドは

pkzip -rP foo *.c

PKZIP は、現在のディレクトリ以外のディレクトリでの再帰を許可しません。) バックスラッシュは、シェルによるファイル名の置換を回避するため、zip がすべてのディレクトリレベルで名前のマッチングを実行します。 [これは、Unix およびその他のシステムで \ が次の文字をエスケープする場合に使用されます。 他のシステムでシェルが * を処理しない場合は、\ を使用せず、上記は

zip -r foo . -i *.c

となります。] したがって、現在のディレクトリの直接下にディレクトリ dir を含めるには、次のように使用します。

zip -r foo . -i dir/\*

または

zip -r foo . -i "dir/*"

dir/a や dir/b/file.c などのパスに一致します [ワイルドカードがシェルで拡張されないポート (MSDOS および Windows など) の場合

zip -r foo . -i dir/*

が使用されます。] 現在、ディレクトリの場合、末尾に / が必要であることに注意してください (例:

zip -r foo . -i dir/

でディレクトリ dir を含めます)。

長いオプション形式の最初の例は次のとおりです。

zip -r foo . --include \*.c

これは、短いオプション形式と同じように機能します。

以前は、コマンド構文で -i をコマンド行の最後に配置する必要がありましたが、このバージョンでは -i (または --include) をどこにでも配置できます。 ファイルのリストは、次の引数の先頭が - で始まる場合、コマンド行の末尾、またはリスト終端子 @ (引数が @ のみの場合) で終了します。 したがって、上記は次のように指定できます。

zip -i \*.c @ -r foo .

例えば。 オプションとリストの最初のファイルの間には空白が必要です。 ファイルが 1 つだけの場合、単一の値形式を使用できます。

zip -i\*.c -r foo .

(オプションと値の間に空白はありません) または

zip --include=\*.c -r foo .

追加の例として。 単一の値形式は推奨されません。これは、混乱を招く可能性があり、特に -i ファイル形式を使用すると、ファイルの最初の文字が i と組み合わさって i で始まる 2 文字のオプションが形成され、問題が発生する可能性があるためです。 -sc を使用して、コマンドラインがどのように解析されるかを確認してください。

また、次も可能です。

zip -r foo . -_

これにより、現在のディレクトリとそのサブディレクトリにある、ファイル include.lst に含まれるパターンに一致するファイルのみが含まれます。

-I
--no-image
[Acorn RISC OS] イメージファイルをスキャンしない。このオプションを使用すると、zipはイメージファイル(例:DOSパーティション、またはSparkFSがロードされている場合のSparkアーカイブ)をディレクトリとしてではなく、単一のファイルとして扱います。

たとえば、SparkFSがロードされている場合、Sparkアーカイブをzipすると、zipファイルにディレクトリ(とその内容)が含まれますが、'-I'オプションを使用すると、zipファイルにSparkアーカイブが含まれます。明らかに、後者のケースは('-I'オプションを使用せずに)SparkFSがロードされていない場合にも得られます。

-ic
--ignore-case
[VMS、WIN32] アーカイブエントリを照合する際に大文字と小文字を区別しない。このオプションは、ファイルの大文字と小文字が区別されないシステムでのみ利用できます。大文字と小文字を区別しないファイルシステムでは、通常、ファイルシステム上のファイル照合時に大文字と小文字は区別されませんが、-f(更新)、-d(削除)、-U(コピー)などのモードでアーカイブエントリに対して照合する場合(現在、VMSでは-fが大文字と小文字を区別しない)には、アーカイブエントリは大文字と小文字を区別するシステムからのものである可能性があり、大文字と小文字が異なる名前がアーカイブに存在しうるため、区別されません。-icオプションを使用すると、すべての照合が大文字と小文字を区別しなくなります。これにより、複数のアーカイブエントリがコマンドラインパターンに一致する可能性があります。

-j
--junk-paths
保存されたファイルの名前のみを保存し(パスを削除し)、ディレクトリ名は保存しません。デフォルトでは、zipは完全なパス(現在のディレクトリからの相対パス)を保存します。

-jj
--absolute-path
[MacOS] 完全パス(+ボリューム名)を記録します。ボリュームを含む完全なパスが保存されます。デフォルトでは、相対パスが保存されます。

-J
--junk-sfx
付加されたデータ(例:SFXスタブ)をアーカイブから削除します。

-k
--DOS-names
名前とパスをMSDOSに準拠するように変換し、MSDOS属性のみを保存し(Unixからのユーザー書き込み属性のみ)、エントリがMSDOSの下で作成された(実際にはそうではなかったとしても)としてマークします。これは、MSDOS上のPKUNZIPが、2つのドットを含む名前など、特定の名前を処理できないため、互換性のために行われます。

-l
--to-crlf
Unixの行末文字LFをMSDOSの規則であるCR LFに変換します。このオプションは、バイナリファイルで使用しないでください。このオプションは、zipファイルがMSDOS上のPKUNZIPで使用される場合にのみ使用する必要があります。入力ファイルにすでにCR LFが含まれている場合、このオプションは余分なCRを追加します。これは、Unix上の`unzip -a`が元のファイルの正確なコピーを取得できるように、`zip -l`の効果を打ち消すためです。-llを参照して、バイナリファイルがどのように処理されるかを確認してください。

-la
--log-append
既存のログファイルに追記します。デフォルトでは、既存のファイルは上書きされます。

-lf logfilepath
--logfile-path logfilepath
指定されたパスにログファイルを開きます。デフォルトでは、その場所に既存のファイルがある場合は上書きされますが、-laオプションを使用すると、既存のファイルが開かれ、新しいログ情報が既存の情報に追加されます。警告とエラーのみがログに書き込まれますが、-liオプションも使用すると、すべての情報メッセージもログに書き込まれます。

-li
--log-info

ログに、ZIP 処理中のファイル名などの情報メッセージを含めます。デフォルトでは、コマンドライン、警告、エラー、および最終ステータスのみが含まれます。

-ll
--from-crlf

MS-DOS の行末の CR LF を Unix の LF に変換します。このオプションは、バイナリファイルには使用しないでください。このオプションは、ZIP ファイルを Unix 上で unzip するために MS-DOS で使用できます。ファイルが変換され、その後ファイルがバイナリファイルであると判断された場合、警告が表示され、ファイルが破損する可能性があります。このリリースでは、-ll がファイルから読み取った最初のバッファーでバイナリファイルを検出すると、zip は警告を発し、ファイルでの行末の変換をスキップします。このチェックは、テストされたすべてのバイナリファイルを検出しているように見えますが、元のチェックは残っており、変換されたファイルが後でバイナリファイルであると判断された場合、その警告は引き続き表示されます。新しいアルゴリズムが現在、UTF-8 やその他のエンコーディングのテキストファイルの行末の変換を可能にするために使用されています。

-L
--license

zip のライセンスを表示します。

-m
--move

指定されたファイルを ZIP アーカイブに移動します。実際には、指定された ZIP アーカイブを作成した後、ターゲットのディレクトリ/ファイルを削除します。ディレクトリがファイルの削除後に空になった場合、そのディレクトリも削除されます。削除は、zip がエラーなしでアーカイブを作成した後でのみ行われます。これは、ディスクスペースを節約するのに役立ちますが、潜在的に危険であるため、-T と組み合わせて、アーカイブを削除する前にテストすることをお勧めします。

-MM
--must-match

すべての入力パターンは、少なくとも 1 つのファイルに一致する必要があり、見つかったすべての入力ファイルは読み取り可能である必要があります。通常、入力パターンがファイルに一致しない場合、「名前が一致しません」という警告が出力され、入力ファイルが見つかったものの、後でファイルが存在しないか、読み取りできない場合、「ファイルが存在しません」または「読み取りできません」という警告が出力されます。いずれの場合も、zip はアーカイブの作成を継続し、存在しないまたは読み取りできない新しいファイルはスキップされ、すでにアーカイブにあるファイルは変更されません。アーカイブが作成された後、ファイルが読み取りできなかった場合、zip は正常なリターン (ほとんどのシステムでは 0) ではなく、OPEN エラーコード (ほとんどのシステムでは 18) を返します。-MM が設定されている場合、zip は、入力パターンが少なくとも 1 つのファイルに一致しない場合、または入力ファイルが読み取りできない場合に、すぐに OPEN エラーで終了し、アーカイブは作成されません。「名前が一致しません」という警告が出力されるとき、または入力ファイルが読み取りできないときに、どちらの場合も zip は OPEN エラーで終了し、アーカイブは作成されません。

このオプションは、既知のファイルのリストを ZIP に圧縮する場合に役立ちます。これにより、ファイルが存在しない、または読み取りできない場合にエラーが発生します。ワイルドカードで使用する場合、あまり役立つわけではありませんが、zip は、入力パターンが少なくとも 1 つのファイルに一致しない場合、または一致したファイルが読み取りできない場合に、それでもエラーで終了します。アーカイブを必ず作成し、スキップされたファイルがあるかどうかを知る必要がある場合は、-MM を使用せず、リターンコードを確認してください。また、-lf も役立つ場合があります。


-n suffixes
--suffixes suffixes

指定されたサフィックスを持つファイルは、圧縮を試みません。 これらのファイルは、出力 zip ファイルに 0% の圧縮率で単純に保存されます。 zip が圧縮を試みて時間を無駄にしないようにするためです。 サフィックスは、コロンまたはセミコロンで区切られます。 例えば:

zip -rn .Z:.zip:.tiff:.gif:.snd foo foo

は、foo からすべてのものを foo.zip にコピーしますが、.Z、.zip、.tiff、.gif、または .snd で終わるファイルは圧縮せずに(画像ファイルとサウンドファイルは、独自の特殊な圧縮方法を持っていることが多いため)、そのまま出力 zip ファイルに保存します。 デフォルトでは、zip は .Z:.zip:.zoo:.arc:.lzh:.arj という拡張子を持つファイルを圧縮しません。 これらのファイルは、出力アーカイブに直接保存されます。 環境変数 ZIPOPT を使用して、デフォルトのオプションを変更できます。 例えば、Unix の csh で:

setenv ZIPOPT "-n .gif:.zip"

すべてのファイルを圧縮するには、次のように使用します。

zip -n : foo

最大の圧縮オプションである -9 は、拡張子に関係なく、すべてのファイルを圧縮しようとします。

Acorn RISC OS システムでは、サフィックスは実際にはファイルタイプ(3桁の 16 進数形式)です。 デフォルトでは、zip は、DDC:D96:68E(つまり、アーカイブ、CFS ファイル、PackDir ファイル)というリストにあるファイルタイプのファイルを圧縮しません。

-nw
--no-wild

内部のワイルドカード処理を実行しません(シェルによるワイルドカードの処理は、シェルによって引き続き実行されます。ただし、引数がエスケープされている場合は除きます)。 パスのリストを読み取り、ワイルドカードの置換が必要ない場合に役立ちます。

-N
--notes
[Amiga, MacOS] Amiga または MacOS のファイルノートを zip ファイルのコメントとして保存します。 unzip の -N オプションを使用して、これらを復元できます。 -c オプションも使用する場合、ファイルノートを持たないファイルに対してのみ、コメントの入力を求められます。

-o
--latest-time

zip アーカイブの「最終更新日時」を、zip アーカイブ内のエントリの中で最も新しい(最も古い)「最終更新日時」に設定します。 これを他の操作なしで使用することもできます。 例えば:

zip -o foo

は、foo.zip の最終更新日時を、foo.zip 内のエントリの中で最も新しい時間に更新します。

-O output-file
--output-file output-file

アーカイブの変更を通常どおり処理しますが、既存のアーカイブを更新する代わりに、新しいアーカイブを output-file に出力します。 既存のアーカイブを変更せずにアーカイブを更新する場合に役立ちます。入力アーカイブと出力アーカイブは異なるファイルである必要があります。

このオプションを使用して、更新された分割アーカイブを作成できます。 また、-U と組み合わせて、既存のアーカイブから新しいアーカイブにエントリをコピーすることもできます。 以下の「例」セクションを参照してください。

別の用途は、分割された zip ファイルを別のサイズに変換することです。たとえば、700MB の CD サイズで分割されたアーカイブを、2GB の DVD サイズに変換するには、次のように使用します。

zip -s 2g cd-split.zip --out dvd-split.zip

これはコピーモードを使用します。-U を参照してください。また、次のようにすると、

zip -s 0 split.zip --out unsplit.zip

分割されたアーカイブを単一のファイルに変換します。

コピーモードは、ストリームエントリ(データ記述子を使用)を通常の形式に変換します(ほとんどの解凍ツールと互換性があるはず)。ただし、標準的な暗号化が使用されている場合は例外です。暗号化されたエントリを含むアーカイブの場合、zipcloak はエントリを復号化し、通常の形式に変換します。

-p
--paths

アーカイブに保存されたファイル名の部分として、相対パスを含めます。これがデフォルトです。-j オプションはパスを無視し、ファイル名のみを保存します。

-P password
--password password

zip ファイルのエントリを暗号化するためのパスワードを使用します(該当する場合)。これは安全ではありません。多くのマルチユーザーオペレーティングシステムでは、任意のユーザーが他のユーザーの現在のコマンドラインを表示できる手段が提供されています。また、スタンドアロンシステムでも、誰かが肩越しに覗き見するリスクがあります。パスワードをプレーンテキストでコマンドラインの一部として自動化されたスクリプトに保存することは、さらに危険です。可能な限り、パスワードを入力するための、エコーバックされないインタラクティブなプロンプ​​トを使用してください。そして、セキュリティが本当に重要な場合は、zip ファイルユーティリティで提供される比較的弱い標準的な暗号化ではなく、強力な暗号化(Pretty Good Privacy など)を使用してください。

-q
--quiet

静音モード。情報メッセージとコメントプロンプ​​トを非表示にします(シェルスクリプトやバックグラウンドタスクで役立ちます)。

-Qn
--Q-flag n
[QDOS] ファイルに関する情報を、n で定義されたビットとしてファイルヘッダーに保存します。
ビット 0: どのファイルに対してもヘッダーを追加しません
ビット 1: すべてのファイルにヘッダーを追加します
ビット 2: 終了時にインタラクティブなキー押下を待ちません

-r
--recurse-paths

ディレクトリ構造を再帰的にトラバースします。例:

zip -r foo.zip foo

または、より簡潔に

zip -r foo foo

この場合、foo ディレクトリ内のすべてのファイルとディレクトリが、foo.zip という名前の zip アーカイブに保存されます。これには、名前が「.」で始まるファイルも含まれます。再帰は、シェルのファイル名置換メカニズムを使用しないためです。foo ディレクトリとそのサブディレクトリ内の特定のファイルセットのみを含めたい場合は、-i オプションを使用して、含めるファイルのパターンを指定します。「.*」を -r に使用しないでください。これは「..」に一致し、親ディレクトリを zip 処理しようとします(おそらく意図したものではないでしょう)。

複数のソースディレクトリが許可されます。

zip -r foo foo1 foo2

この場合、最初に foo1 を zip 処理し、次に foo2 を zip 処理し、各ディレクトリを再帰的に処理します。

-r に使用されるワイルドカードは、通常、ファイルシステム内のディレクトリを再帰的に処理するときに解決されますが、-R、-x、および -i ワイルドカードは、ディレクトリがスキャンされた後に内部アーカイブのパス名に適用されます。Unix および同様のシステムで、サブディレクトリ内のファイルにワイルドカードを適用して再帰的に処理する場合は、すべてのワイルドカードをエスケープするか、ワイルドカードを含むすべての引数を引用符で囲みます。これにより、zip はワイルドカードを検出し、再帰処理中にそれらを使用してサブディレクトリ内のファイルに一致させることができます。


-R
--recurse-patterns

現在のディレクトリからディレクトリ構造を再帰的にトラバースします。たとえば、次のようになります。

zip -R foo "*.c"

この場合、現在のディレクトリから始まるツリー内のすべての *.c に一致するファイルが、foo.zip という名前の zip アーカイブに格納されます。*.c は、file.ca/file.c、および a/b/.c に一致します。複数のパターンを別の引数としてリストできます。PKZIP ユーザーの場合、同等のコマンドは次のとおりです。

pkzip -rP foo *.c

パターンは、アーカイブ内の相対ファイルパス、または zip 処理後のファイルパスであり、オプションでワイルドカードを含めることができます。たとえば、現在のディレクトリが foo で、その下に foo1foo2 というディレクトリがあり、foo1bar.c というファイルがある場合、

zip -R foo/*

は、foofoo/foo1foo/foo1/bar.c、および foo/foo2 を zip します。

zip -R */bar.c

は、foo/foo1/bar.c を zip します。ワイルドカードのエスケープに関する注記を参照してください。

-RE
--regex
[WIN32] zip 3.0 以前では、Windows プラットフォームで正規表現リストマッチングがデフォルトで有効になっていました。`[` および `]` を名前でエスケープする必要があるため混乱が生じたため、現在は Windows でデフォルトで無効になっており、`[` および `]` は通常の文字として扱われます。このオプションは、`[]` マッチングを再び有効にします。

-s splitsize
--split-size splitsize

分割アーカイブの作成を有効にし、分割サイズを設定します。分割アーカイブは、複数のファイルに分割できるアーカイブです。アーカイブの作成中に、アーカイブのサイズが指定された分割サイズに達すると、その分割が閉じられ、次の分割が開かれます。一般的に、すべての分割(最後の分割を除く)は分割サイズになり、最後の分割は残りのサイズになります。アーカイブ全体が分割サイズよりも小さい場合、単一のファイルとしてアーカイブが作成されます。

分割アーカイブは、番号付きのファイルに保存されます。たとえば、出力アーカイブの名前が archive で、3 つの分割が必要な場合、結果のアーカイブは、archive.z01archive.z02、および archive.zip の 3 つのファイルに保存されます。これらのファイルの番号を変更しないでください。アーカイブが読み取りできなくなる可能性があります。これらの番号は、分割の読み取り順を決定するために使用されます。

分割サイズは、オプションで乗数を伴う数値です。現在は、数値は整数である必要があります。乗数は、現在、k(キロバイト)、m(メガバイト)、g(ギガバイト)、または t(テラバイト)のいずれかになります。64k が最小の分割サイズであるため、乗数なしの数値はデフォルトでメガバイトになります。たとえば、bar ディレクトリの内容を分割サイズ 670MB で foo という名前の分割アーカイブに作成し、CD に書き込むのに便利なようにするには、次のコマンドを使用できます。

zip -s 670m -r foo bar

現在、分割アーカイブの古い分割は新しいアーカイブから除外されませんが、明示的に除外できます。可能な場合は、入力と出力のアーカイブを、分割アーカイブを作成する際の zip 対象のパスから分離してください。

-s フラグに -sp フラグを伴わない場合、上記のように、foo が書き込まれるすべての場所に分割が作成されます。この場合、現在のディレクトリになります。この分割モードでは、アーカイブの作成中に分割が更新され、すべての分割が書き込み可能である必要がありますが、分割アーカイブは、分割アーカイブをサポートするすべての unzip で読み取り可能になります。-sp フラグを使用して、分割一時停止モードを有効にすることで、分割をリムーバブルメディアに直接書き込むことができます。

-sv オプションを使用して、詳細な分割を有効にし、分割の実行方法の詳細を表示できます。-sb オプションを使用して、zip が次の分割先を待機するときにベル音を鳴らすことができます。

分割アーカイブは更新できませんが、-O (--out) オプションを使用して、分割アーカイブを新しいアーカイブにコピーするときに、分割アーカイブを更新する方法を確認してください。分割アーカイブを、分割サイズを 0 にするか、-s オプションを否定することで、単一ファイルアーカイブに変換することもできます。

zip -s 0 split.zip --out single.zip

-U (--copy) オプションの詳細については、こちらをご覧ください。

-sb
--split-bell

分割を使用し、分割一時停止モードを使用している場合、zip が各分割先を待機するときにベル音を鳴らします。

-sc
--show-command

コマンドラインの zip を処理したとおりに表示し、終了します。新しいコマンドパーサーは、引数を並べ替え、すべてのオプションとそれに関連する値を、オプション以外のすべての引数の前に配置します。これにより、オプションはコマンドラインのどこにでも表示できますが、オプションに関連する値は、そのオプションと一緒に配置する必要があります。このオプションは、zip がコマンドラインをどのように解釈するかを、環境からの引数(ZIPOPT 変数など)を含めて表示します。許可されている場合、コマンドラインの後半にあるオプションは、コマンドラインの最初にあるオプションをオーバーライドできます。

-sf
--show-files

操作されるファイルを一覧表示し、終了します。たとえば、新しいアーカイブを作成する場合、このオプションは追加されるファイルを一覧表示します。オプションを否定した場合(-sf-)、出力は開いているログファイルにのみ行われます。大規模なリストの場合、画面表示は推奨されません。

-so
--show-options

現在のシステムでコンパイルされた zip でサポートされているすべてのオプションを一覧表示します。このコマンドはオプションテーブルを読み取るため、すべてのオプションが含まれているはずです。各行には、短いオプション(定義されている場合)、長いオプション(定義されている場合)、オプションに関連する値の形式、オプションを否定できるかどうか、および簡単な説明が含まれます。値の形式は、値なし、必須の値、オプションの値、単一文字の値、数値、または値のリストです。このオプションの出力は、オプションの使用方法を示すことを目的としておらず、利用可能なオプションのみを示します。

-sp
--split-pause

-s で分割が有効になっている場合、分割一時停止モードを有効にします。これにより、-s と同様の分割アーカイブが作成されますが、ストリーム書き込みが使用されるため、各分割は書き込まれるとすぐに閉じることができ、zip は各分割の間に一時停止し、分割先またはメディアを変更できるようになります。

-sp
--split-size size
Split the archive into several files, each with a maximum size of size bytes. これは、リムーバブルメディアへの分割ファイルの直接書き込みを可能にするモードですが、一部の解凍ソフトで読み取れないストリームアーカイブ形式を使用します。-spで作成された分割アーカイブを使用する前に、使用する解凍ソフトでテストしてください。

-s
--stream
出力は分割アーカイブのストリームとして書かれます。これは、通常、アーカイブファイルに書き込むのではなく、標準出力に書き込むためです。

-S
--system-hidden
[MSDOS、OS/2、WIN32、およびATARI] システムファイルと非表示ファイルを含めます。
[MacOS] 通常は無視されるFinderの非表示ファイルを含めます。

-t mmddyyyy
--from-date mmddyyyy
指定された日付以降に変更されたファイルに対してのみ操作を実行します。mmは月(00-12)、ddは日(01-31)、yyyyは年です。ISO 8601日付形式 yyyy-mm-dd も受け入れられます。例:

zip -rt 12071991 infamy foo

zip -rt 1991-12-07 infamy foo

は、fooとそのサブディレクトリ内のすべてのファイルを、1991年12月7日以降に変更されたものとして、infamy.zipアーカイブに追加します。

-tt mmddyyyy
--before-date mmddyyyy
指定された日付以前に変更されたファイルに対してのみ操作を実行します。mmは月(00-12)、ddは日(01-31)、yyyyは年です。ISO 8601日付形式 yyyy-mm-dd も受け入れられます。例:

zip -rtt 11301995 infamy foo

zip -rtt 1995-11-30 infamy foo

は、fooとそのサブディレクトリ内のすべてのファイルを、1995年11月30日以前に変更されたものとして、infamy.zipアーカイブに追加します。

-T
--test
新しいzipファイルの整合性をテストします。チェックに失敗した場合、古いzipファイルは変更されず、(-mオプションがある場合)入力ファイルは削除されません。

-TT cmd
--unzip-command cmd
-Tオプションが使用されている場合に、アーカイブをテストするために'unzip -tqq'の代わりにコマンドcmdを使用します。
Unixでは、システムの標準的なunzipの代わりに、現在のディレクトリにあるunzipのコピーを使用するには、次のように使用できます。

zip archive file1 file2 -T -TT "./unzip -tqq"

cmdでは、{}は一時的なアーカイブの名前に置き換えられ、それ以外の場合はアーカイブの名前がコマンドの末尾に追加されます。戻りコードは、成功(Unixでは0)かどうかを確認するためにチェックされます。

-u
--update
zipアーカイブ内の既存のエントリが、zipアーカイブ内のバージョンよりも最近に変更された場合にのみ、置き換えます(更新します)。例:

zip -u stuff *

は、現在のディレクトリ内の新しいファイルを追加し、zipアーカイブstuff.zipが最後に作成/変更されてから変更されたファイルを更新します(zipは、これを行うときに自身をzipしようとはしません)。

-uオプションにファイル引数がない場合、-f(freshen)オプションと同じように動作することに注意してください。

-U
--copy-entries

あるアーカイブから別のアーカイブにエントリをコピーします。--out オプションを使用して、入力ファイルとは異なる出力ファイルを指定する必要があります。コピーモードは、-d delete の逆です。delete を --out と組み合わせて使用​​する場合、選択されたエントリはアーカイブから削除され、他のすべてのエントリが新しいアーカイブにコピーされます。一方、コピーモードでは、新しいアーカイブに含めるファイルが選択されます。-u update とは異なり、コマンドラインの入力パターンは、ファイルシステム内のファイルではなく、アーカイブエントリに対してのみ照合されます。たとえば、

zip inarchive "*.c" --copy --out outarchive

は、inarchive から outarchive に、名前が .c で終わるエントリをコピーします。ワイルドカードは、一部のシステムでは、ファイルシステムのファイル名に展開されないようにエスケープする必要があります。

コマンドラインに何も入力ファイルがなく、--out が使用されている場合、コピーモードと見なされます。

zip inarchive --out outarchive

これは、たとえば、分割サイズを変更する場合に役立ちます。コピーモードを使用してエントリを暗号化および復号化することはできません。zipcloak を使用してください。

-UN v
--unicode v

zip が Unicode ファイル名をどのように処理するかを決定します。zip 3.0 は、標準のファイルパスに加えて、エントリのパスが完全に 7 ビット ASCII でない場合に、パスの UTF-8 翻訳も含まれます。エントリに Unicode パスがない場合、zip は標準のファイルパスに戻ります。標準のパスを使用する問題は、このパスがエントリを作成した zip のローカル文字セットにあり、zip で解凍する文字セットに有効でない文字が含まれている可能性があることです。zip がアーカイブを読み取るとき、エントリに Unicode パスも含まれている場合、zip は Unicode パスを使用して、現在のローカル文字セットを使用して標準のパスを再作成するようになりました。

このオプションを使用して、保存された標準パスと保存された UTF-8 パスの間に不一致がある場合(標準パスが更新された場合に発生する可能性があります)に、zip がこのパスをどのように処理するかを決定できます。いずれの場合も、不一致がある場合は、標準パスがより最新であると想定され、zip はそれを​​使用します。v の値は次のとおりです。

q - パスが一致しない場合は終了します。

w - 警告し、標準パスを使用します。

i - 無視し、標準パスを使用します。

n - Unicode を使用しません。Unicode パスは使用しません。

デフォルトは、警告して続行することです。

現在の文字セットに有効でない文字は、#Uxxxx および #Lxxxxxx としてエスケープされます。ここで、x は 16 進数の ASCII 文字です。最初は、Unicode 文字を 16 ビット文字数で表現できる場合に、2 番目は、文字を表現するのに 16 ビットを超える必要がある場合に、使用されます。-UN を次のように設定します。

e - エスケープ

次のようにします。

zip archive -sU -UN=e

これにより、印刷可能な 7 ビット ASCII でないすべての文字をエスケープするように zip が強制されます。

通常、zip は、UTF-8 が現在の文字セットであるシステムでは、UTF-8 を標準のパスフィールドに直接保存し、それ以外の場合は新しい追加フィールドに UTF-8 を保存します。オプション


u - UTF-8

次のように使用します。

zip アーカイブ ディレクトリ -r -UN=UTF8

これにより、zip は UTF-8 をアーカイブ内でネイティブ形式で保存するように強制されます。UTF-8 を直接保存することが、Unix システムでサポートされている場合のデフォルトです。このオプションは、エスケープされたパスが有効なパスとして大きすぎる場合に役立つ可能性があります。Windows システムでは、UTF-8 バージョンのパスの方が小さい場合がありますが、ネイティブ UTF-8 は Windows システムでは後方互換性がないことに注意してください。

-v
--verbose
詳細モードまたは診断バージョン情報の表示。

通常、これは実際の操作に適用される場合、圧縮中に進捗状況インジケーターを表示し(-dd を参照)、zip ファイル構造の異常に関する詳細な診断情報を要求します。

ただし、-v が唯一のコマンドライン引数である場合、診断画面が代わりに表示されます。これにより、stdout がファイルにリダイレクトされている場合でも、情報を簡単に保存して Info-ZIP にバグ報告として送信できるようになります。バージョン画面には、プログラム名、バージョン、リリース日を含むヘルプ画面のヘッダー、Info-ZIP ホームおよびディストリビューションサイトへのいくつかのポインタ、およびターゲット環境に関する情報(コンパイラの種類とバージョン、OS バージョン、コンパイル日、および zip 実行ファイルの作成に使用される有効なオプション機能)が表示されます。

-V
--VMS-portable
[VMS] VMS ファイル属性を保存します(ファイルは EOF で切り捨てられます)。-V アーカイブが非 VMS システムで解凍された場合、一部のファイルタイプ(特に Stream_LF テキストファイルおよび固定 512 のような純粋なバイナリファイル)は変更されずに抽出されるはずです。インデックスファイルおよび埋め込みレコードサイズを持つファイルタイプ(特に可変長レコードタイプ)は、他の場所では破損しているように見える可能性があります。

-VV
--VMS-specific
[VMS] VMS ファイル属性と、ファイル内のすべての割り当てられたブロック(EOF を超えるデータを含む)を保存します。これは、VMS システム間で不完全なファイルを移動するのに役立ちます。-VV アーカイブが非 VMS システムで解凍された場合、ほぼすべてのファイルが破損しているように見える可能性があります。

-w
--VMS-versions
[VMS] 複数のファイルのバージョンをファイル名に付加します。デフォルトでは、指定されたファイルの最新バージョンのみが使用されます。

-ww
--VMS-dot-versions
[VMS] 複数のファイルのバージョンをファイル名に付加します。デフォルトでは、指定されたファイルの最新バージョンのみが使用されます。形式は .nnn です。

-ws
--wild-stop-dirs
ワイルドカードはディレクトリレベルでのみ一致します。通常、zip はパスを文字列として扱い、次のようなパスを処理します。

/foo/bar/dir/file1.c

/foo/bar/file2.c

入力パターンは次のとおりです。

/foo/bar/*

通常、これらは両方のパスに一致します。* は、dir/file1.c と file2.c の両方に一致します。ただし、最初のケースでは、一致時にディレクトリ境界(/)がクロスされました。-ws を有効にすると、ディレクトリ境界が一致に含まれなくなります。ワイルドカードは特定のディレクトリレベルにローカルになります。したがって、-ws が有効になっている場合、2 番目のパスのみが一致します。

-ws を使用する場合、** を使用してディレクトリ境界を越えて一致させます。これは、* が通常行う動作と同じです。

-x ファイル
--exclude ファイル

指定されたファイルを明示的に除外します。例:

zip -r foo foo -x \*.o

これにより、foo の内容が foo.zip に含まれますが、.o で終わるすべてのファイルは除外されます。バックスラッシュはシェルのファイル名置換を回避するため、名前の照合はすべてのディレクトリレベルで zip によって実行されます。

また、以下も可能です。

zip -r foo foo -_

これにより、foo の内容が foo.zip に含まれますが、exclude.lst ファイル内のパターンに一致するすべてのファイルは除外されます。

上記の長いオプション形式は次のとおりです。

zip -r foo foo --exclude \*.o

および

zip -r foo foo --exclude @exclude.lst

複数のパターンを指定できます。例:

zip -r foo foo -x \*.o \*.c

-x とパターンの間にスペースがない場合、1 つの値のみが想定されます(リストではありません)。

zip -r foo foo -x\*.o

-i オプションで、含めるものと除外するものについて詳しく説明します。

-X
--no-extra

追加のファイル属性(OS/2 の拡張属性、Unix の uid/gid およびファイル時間)を保存しません。zip 形式は、各エントリに追加情報を含めるための追加フィールドを使用します。一部の追加フィールドは特定のシステムに固有ですが、他のフィールドはすべてのシステムに適用されます。通常、zip が既存のアーカイブからエントリを読み取ると、zip は既知の追加フィールドを読み取り、残りを削除し、そのシステムに適用可能な追加フィールドを追加します。-X を使用すると、zip はすべての古いフィールドを削除し、Unicode および Zip64 の追加フィールドのみを含めます(これら 2 つの追加フィールドは現在、無効にすることはできません)。

このオプションを否定する(-X-)は、すべてのデフォルトの追加フィールドを含めるだけでなく、認識されていない追加フィールドもコピーします。

-y
--symlinks

UNIX および VMS (V8.3 以降) の場合、シンボリックリンクを zip アーカイブにシンボリックリンクとして保存します。これにより、zip がディレクトリツリーを再帰的に処理し、ファイルに直接およびリンクを通じてアクセスするため、複数のファイルのコピーがアーカイブに含まれるのを回避できます。

-z
--archive-comment

zip アーカイブ全体のマルチラインコメントの入力を求めます。コメントは、単にピリオドが含まれる行、またはファイル末尾の状態 (^D (Unix)、^Z (MSDOS、OS/2、および VMS)) で終了します。コメントはファイルから取得できます。

zip -z foo < foowhat

-Z cm
--compression-method cm

デフォルトの圧縮方法を設定します。現在、zip でサポートされている主な方法は、store と deflate です。圧縮方法は次のように設定できます。

store - 圧縮方法を store に設定すると、zip はエントリを圧縮せずに保存するように強制されます。これは通常、エントリを圧縮するよりも高速ですが、スペースの節約にはなりません。これは、圧縮レベル 0 を使用するのと同じです。

deflate - これは zip のデフォルトの方法です。zip が store よりも deflate の方が優れていると判断した場合、エントリは代わりに store されます。

bzip2 - bzip2 サポートがコンパイルされている場合、この圧縮方法も使用可能になります。現在、一部の最新の unzip ツールのみが bzip2 圧縮方法をサポートしているため、使用する unzip ツールを事前にテストしてから、この方法を使用するアーカイブに依存してください(圧縮方法 12)。

たとえば、bzip2圧縮を使用して、bar.cをfooアーカイブに追加するには:

zip -Z bzip2 foo bar.c

圧縮方法は省略できます:

zip -Zb foo bar.c
-#
(-0, -1, -2, -3, -4, -5, -6, -7, -8, -9)

圧縮速度を、指定された数字#で調整します。-0は圧縮なし(すべてのファイルを保存)、-1は最速の圧縮速度(圧縮率が低い)、-9は最も遅い圧縮速度(最適な圧縮、サフィックスリストを無視)を示します。デフォルトの圧縮レベルは-6です。

現在も開発中ですが、この設定はすべての圧縮方法の圧縮速度を制御することを目的としています。現在はdeflateのみが制御されています。

-!
--use-privileges

[WIN32] WinNTセキュリティのすべての側面を取得するために、特権(付与されている場合)を使用します。

-@
--names-stdin

入力ファイルリストを標準入力から取得します。1行に1つのファイル名を指定します。

-$
--volume-label

[MSDOS、OS/2、WIN32] 圧縮する最初のファイルを含むドライブのボリュームラベルを含めます。ボリュームラベルのみを含める場合、または特定のドライブを強制する場合は、ドライブ名を最初のファイル名として使用します。例:

zip -$ foo a: c:bar

最も簡単な例:

zip stuff *

これにより、アーカイブstuff.zipが作成され(存在しない場合)、現在のディレクトリ内のすべてのファイルが圧縮された状態でアーカイブに追加されます(.zipサフィックスは自動的に追加されます。アーカイブ名にすでにドットが含まれている場合、これは許可され、他のサフィックスを明示的に指定できます)。

Unixのシェルのファイル名置換の仕組みにより、ドットで始まるファイルは含まれません。これらを含めるには:

zip stuff .* *\

それでも、現在のディレクトリからのサブディレクトリはアーカイブに含められません。

ディレクトリ全体をzip圧縮するには、次のコマンドを使用します:

zip -r foo foo

これにより、アーカイブfoo.zipが作成され、現在のディレクトリに含まれるディレクトリfoo内のすべてのファイルとディレクトリが含まれます。

ディレクトリ名fooを記録せずに、foo内のファイルをzipアーカイブに含めたい場合があります。パスを省略するには、-jオプションを使用します。例:

zip -j foo foo/*

ディスクスペースが不足している場合、元のディレクトリと対応する圧縮されたzipアーカイブの両を保持するのに十分なスペースがない場合があります。この場合、-mオプションを使用して、アーカイブを段階的に作成できます。fooにtom、dick、harryというサブディレクトリが含まれている場合、次のように実行できます:

zip -rm foo foo/tom
zip -rm foo foo/dick
zip -rm foo foo/harry

最初のコマンドはfoo.zipを作成し、次の2つのコマンドはそれにファイルを追加します。各zipコマンドの完了時に、最後に作成されたアーカイブが削除され、次のzipコマンドが機能するためのスペースが確保されます。

-sを使用して、分割サイズを設定し、分割アーカイブを作成します。サイズは数字で指定し、オプションでk(KB)、m(MB)、g(GB)、またはt(TB)を追加します。コマンド


zip -s 2g -r split.zip foo

ディレクトリ `foo` のアーカイブを、各分割ファイルのサイズが 2 GB を超えないように分割して `split.zip` として作成します。 `foo` に 5 GB のコンテンツが含まれており、コンテンツが圧縮なしで分割アーカイブに保存される場合、`split.z01` (2 GB)、`split.z02` (2 GB)、および `split.zip` (1 GB 弱) の 3 つの分割ファイルが作成されます。

-sp オプションを使用すると、たとえばリムーバブルメディアを交換するために、分割の間に zip の処理を一時停止できますが、-s および -sp の両方の説明と警告をよく読んでください。

zip は分割アーカイブを更新しませんが、新しい -O (--output-file) オプションを使用して、分割アーカイブを更新して新しいアーカイブに保存できます。 たとえば、

zip inarchive.zip foo.c bar.c --out outarchive.zip

は、アーカイブ `inarchive.zip` (分割されている場合でも) を読み取り、ファイル `foo.c` および `bar.c` を追加し、結果のアーカイブを `outarchive.zip` に書き込みます。 `inarchive.zip` が分割されている場合、`outarchive.zip` はデフォルトで同じ分割サイズになります。 `outarchive.zip` およびそれと一緒に作成される分割ファイルは、警告なしに常に上書きされることに注意してください。 これは将来変更される可能性があります。

パターンマッチング

このセクションは Unix にのみ適用されます。 MSDOS および VMS オペレーションに関する詳細は、後日公開されます。 ただし、以下に示す特殊なワイルドカード文字 * および [] は、少なくとも MSDOS にも適用されます。

Unix シェル (sh、csh、bash など) は、通常、コマンド引数に対してファイル名の置換 (別名「グロビング」) を実行します。 通常、特殊文字は次のとおりです。

?      任意の 1 文字に一致します

*      任意の数の文字 (空文字を含む) に一致します

[]     角括弧内の範囲で指定された文字のいずれかに一致します (例: [a-f]、[0-9])。
この形式のワイルドカードマッチングを使用すると、ユーザーは角括弧で囲まれた文字のリストを指定でき、その文字のいずれかが一致すれば、式が一致します。 たとえば、

zip archive "*.[hc]"

は、現在のディレクトリ内の拡張子が .h または .c で終わるすべてのファイルをアーカイブします。

文字の範囲がサポートされています。

zip archive "[a-f]*"

は、"a" から "f" で始まるすべてのファイルをアーカイブに追加します。

否定もサポートされており、角括弧の先頭に ! または ^ を追加することで、リストにない文字が一致します。

zip archive "*.[!o]"

は、".o" で終わらないファイルに一致します。

WIN32 では、[] マッチングを使用するには、-RE オプションを有効にして、[ または ] を含む名前による混乱を回避する必要があります。

これらの文字が検出されると (バックスラッシュまたは引用符でエスケープされていない場合)、シェルは現在のパスを基準にしてパターンに一致するファイルを検索し、引数を一致した名前のリストに置き換えます。

zip プログラムは、変更されている zip アーカイブ内の名前、または -x (除外) または -i (含める) オプションで指定されたファイルリスト内の名前に対して、同じマッチングを実行できます。これを行うには、バックスラッシュまたは引用符を使用して、シェルによる名前の拡張を抑制します。 一般に、zip が実行するファイルのリスト内の名前を検出すると、最初にファイルシステムで名前を検索します。 ファイルシステムで見つかった場合、その名前を処理するファイルリストに追加します。 ファイルシステムで見つからない場合は、変更されている zip アーカイブ (存在する場合) で名前を検索し、上記のパターンマッチング文字を使用します。 一致する名前ごとに、その名前が -x オプションで指定された名前と一致しない場合、または -i オプションで指定された名前のいずれとも一致しない場合は、その名前を処理するファイルリストに追加します。


パターンマッチングにはパスも含まれるため、*.o のようなパターンは、パスのプレフィックスに関係なく、.o で終わる名前と一致します。バックスラッシュは、すべての特殊文字(つまり、?*[])の前に置く必要があります。または、引数全体を二重引用符("")で囲む必要があります。

一般的に、ワイルドカードを含むパスの場合、zip でファイルパスのパターンマッチングを行うために、バックスラッシュまたは二重引用符を使用し、-i-x-R-d、および -U のオプションや、zip がワイルドカードを処理する必要がある場所では、常にパスと文字列にスペースまたはワイルドカードを含めるようにしてください。

環境

次の環境変数は読み取られ、zip によって以下のように使用されます。

ZIPOPT
zip の実行時に使用されるデフォルトのオプションが含まれています。この環境変数の内容は、zip コマンドの直後にコマンドラインに追加されます。

ZIP
[RISC OS および VMS では使用されません] `ZIPOPT` を参照してください。

Zip$Options
[RISC OS] `ZIPOPT` を参照してください。

Zip$Exts
[RISC OS] コロンで区切られた拡張子が含まれており、指定された拡張子を持つネイティブのファイル名は、ベース名と拡張子が入れ替わって zip ファイルに追加されます。

ZIP_OPTS
[VMS] `ZIPOPT` を参照してください。

関連項目

compress(1)、shar(1)、tar(1)、unzip(1)、gzip(1)

診断

終了ステータス(またはエラーレベル)は、PKWARE で定義された終了コードに近似しており、VMS 以外の環境では、次の値をとります。

0     正常。エラーや警告は検出されませんでした。

2     zip ファイルの予期しない終わり。

3     zip ファイル形式に一般的なエラーが検出されました。処理は正常に完了した可能性があります。他のアーカイバーによって作成された壊れた zip ファイルには、簡単な回避策が用意されている場合があります。

4     zip が、プログラムの初期化中に 1 つ以上のバッファーのメモリを割り当てることができませんでした。

5     zip ファイル形式に重大なエラーが検出されました。処理は直ちに失敗した可能性があります。

6     エントリが大きすぎて処理できない(たとえば、Zip64 を使用していない場合、または既存のアーカイブが大きすぎる場合に、2 GB を超える入力ファイル、または zipsplit で分割できないエントリ)。

7     無効なコメント形式。

8     zip -T が失敗するか、メモリ不足。

9     ユーザーが Ctrl+C(または同等の操作)で zip を途中で中断しました。

10    zip が一時ファイルを使用中にエラーを発生させました。

11    読み取りまたはシークエラー。

12  zipには関係ありません。

13  zipファイルが見つからないか、空です。

14  ファイルへの書き込みエラー

15  zipは書き込み用のファイルを作成できませんでした。

16  無効なコマンドラインパラメータ

18  zipは指定されたファイルを読み開けませんでした。

19  zipは、このシステムでサポートされていないオプションでコンパイルされました。

VMSは、標準のUnix(またはPC)のリターン値を、より恐ろしいものとして解釈するため、zipは代わりにそれらをVMSスタイルのステータスコードにマッピングします。一般に、zipはVMS Facility = 1955(0x07A3)、Code = 2* Unix_statusを設定し、適切なSeverity(ziperr.hで指定)を設定します。詳細は、VMS固有のドキュメント([.vms]NOTES.TXT、[.vms]vms_msg_gen.c)に記載されています。

バグ

zip 3.0はPKUNZIP 1.10と互換性がありません。PKUNZIP 1.10で抽出できるzipファイルを作成するには、zip 1.1を使用してください。

zip 3.0で作成されたzipファイルは、暗号化されたメンバーを含んでいる場合、またはパイプ内またはアクセス不能なデバイス上で作成された場合は、zip 1.1またはPKZIP 1.10で更新しないでください。古いバージョンのzipまたはPKZIPは、形式が正しくないアーカイブを作成します。古いバージョンはzipファイルのコンテンツをリスト表示できますが、抽出することはできません(新しい圧縮アルゴリズムのため)。暗号化を使用せず、通常のディスクファイルを使用している場合は、この問題について心配する必要はありません。

VMSでは、すべての奇妙なファイル形式が適切に処理されるわけではありません。ストリーム-LF形式のzipファイルのみがzipで機能することが予想されます。他の形式は、Rahul DhesiのBILFプログラムを使用して変換できます。このバージョンのzipは、一部の変換を内部的に処理します。Kermitを使用してzipファイルをVMSからMSDOSに転送する場合は、VMSで「set file type block」と入力します。MSDOSからVMSに転送する場合は、VMSで「set file type fixed」と入力します。どちらの場合も、MSDOSで「set file type binary」と入力します。

一部の古いVMSバージョンでは、zipはDECnet構文を使用したファイル指定でハングアップする可能性があります(foo::*.*など)。

OS/2では、zipは感嘆符またはハッシュ記号を含む名前を一致させることができません。これはOS/2自体のバグです。32ビットのDosFindFirst/Nextは、そのような名前を見つけることができません。GNU tarなどの他のプログラムも、このバグの影響を受けます。

OS/2では、DIRによって表示される拡張属性の量は、(互換性のために)16ビットバージョンのDosQueryPathInfo()によって返される量です。それ以外の場合、OS/2 1.3と2.0は、ファイルをDIRしたときに異なるEAサイズを報告します。ただし、32ビットのDosQueryPathInfo()によって返される構造のレイアウトは少し異なり、将来のOS/2バージョンへの移植性を高めるために、追加のパディングバイトとリンクポインタ(リンクリスト)を使用して、すべてのフィールドを4バイト境界に配置します。したがって、zipによって報告される値(これは32ビットモードのサイズを使用します)は、DIRによって報告される値とは異なります。zipは、32ビット形式を保存します。OS/2 1.3で実行されている16ビットのMS-Cコンパイルバージョンでも、32ビットモードのサイズが表示されます。

著者

Copyright (C) 1997-2008 Info-ZIP。

現在、Info-ZIPライセンスの下で配布されています。


Copyright (C) 1990-1997 Mark Adler、Richard B. Wales、Jean-loup Gailly、Onno van der Linden、Kai Uwe Rommel、Igor Mandrichenko、John Bush、および Paul Kienitz。

元の著作権表示:

このソフトウェアは、すべての元のファイルが含まれており、営利目的で販売されず、この著作権表示が保持されている限り、すべての個人または機関が使用、コピー、または再配布することができます。

あらゆる無料のソフトウェアと同様に、ZIPとその関連ユーティリティは「現状のまま」提供され、いかなる種類の保証も伴いません(明示または黙示)。著作権者は、このソフトウェアの使用に起因するいかなる損害についても責任を負いません。

バグ報告およびコメントは、次のウェブページにお送りください:www.info-zip.org。バグ報告の場合、zipのバージョン(zip -h を参照)、コンパイルに使用したmakeオプション(zip -v を参照)、使用しているマシンおよびオペレーティングシステム、および可能な限り多くの追加情報を含めてください。

謝辞

このプロジェクトのインスピレーションとなり、shrinkアルゴリズムを流用したR. P. Byrne氏のShrink.Pasプログラムに感謝します。また、zipファイル形式、圧縮形式、および.ZIPファイル名拡張を一般に公開し、ファイル形式へのわずかな変更を受け入れたPhil Katz氏、deflate形式に関する明確化を行ったSteve Burg氏、圧縮アルゴリズムに関する有用なアイデアを提供してくれたHaruhiko Okumura氏およびLeonid Broukhis氏、メーリングリストとFTPサイトを提供してくれたKeith Petersen氏、Rich Wales氏、Hunter Goatley氏、およびMark Adler氏に感謝します。そして最も重要なのは、Info-ZIPグループ(infozip.whoファイルにリストされています)であり、彼らのたゆまぬテストとバグ修正の努力なしには、移植可能なzipは実現不可能でした。最後に、最初のInfo-ZIPモデレーターであるDavid Kirschbaum氏に感謝(または非難)します。彼は私たちをこの状況に巻き込んだのです。Unix用のマニュアルページは、R. P. C. Rodgers氏によって書き換えられ、zip 3.0用にE. Gordon氏によって更新されました。