本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「zip」コマンドです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ファイルをZIP形式で圧縮するための「zip」コマンドを解説します。
「zip」は、ファイルをZIP形式で圧縮するコマンドです。ZIPはWindows環境で特にポピュラーな圧縮形式で、複数のファイルを圧縮して1つのファイルにすることができます。ZIPファイルから元のファイルを取り出す場合は、「unzip」コマンドを使用します(次回解説)。
zipコマンドの主なオプションは次の通りです。
短いオプション | 長いオプション | 意味 |
---|---|---|
-f | --freshen | 変更があったファイルの分だけZIPファイルを更新する |
-u | --update | 変更があったファイルの更新または新規ファイルの追加だけを行う |
-d | --delete | 指定したファイルをZIPファイルから削除する |
-m | --move | ZIPファイルに移動する(元のファイルは削除される) |
-r | --recurse-paths | ディレクトリ内のファイルを再帰的に扱う |
-T | --test | 動作をテストする(異常があった場合ZIPファイルは更新されず、「-m」オプション指定時のファイル削除も行わない) |
短いオプション | 長いオプション | 意味 |
---|---|---|
-t 日付 | --from-date=日付 | ファイルの更新日が指定した日付以降のものを対象とする(日付は「mmddyyyy」で指定) |
-tt 日付 | --before-date=日付 | ファイルの更新日が指定した日付以前のものを対象とする(日付は「mmddyyyy」で指定) |
-@ | 処理対象のファイル名を標準入力から読み込む | |
-x ファイル | --exclude=ファイル | 対象から外すファイル名を指定する(対象ファイルの後で指定) |
-i ファイル | --include=ファイル | 対象とするファイル名を限定する(対象ファイルの後で指定) |
-n 拡張子 | --suffixes=拡張子 | 指定した拡張子は圧縮しない |
-R | --recurse-patterns | 指定パターンを再帰的に探して対象にする(例えば、「-R ZIPファイル "*.txt"」でカレントディレクトリ下の「*.txt」を圧縮対象にする) |
短いオプション | 長いオプション | 意味 |
---|---|---|
-D | --no-dir-entries | ディレクトリは格納せず、ファイルだけを格納する |
-y | --symlinks | シンボリックリンクをたどらずに、シンボリックリンクのまま格納する |
-p | --paths | 相対パス名も含めて格納する(デフォルト) |
-j | --junk-paths | ディレクトリ名なしで格納する |
-X | --no-extra | 拡張属性は格納しない |
-l | --to-crlf | 改行コードを「LF」から「CR LF」に変換する |
-ll | --from-crlf | 改行コードを「CR LF」から「LF」に変換する |
短いオプション | 長いオプション | 意味 |
---|---|---|
-0〜9 | 圧縮率の調整。「-0」は圧縮せずZIPファイルに格納するのみ〜「-9」で圧縮率を最高にする。圧縮率を上げると処理スピードが落ちる(デフォルトは「-6」) | |
-s 分割サイズ | --split-size=分割サイズ | 分割ZIPファイルを作成するときのサイズ |
-O ファイル名 | --output-file=ファイル名,--out=ファイル名 | 出力するZIPファイル名(ZIPファイルを元に、別のZIPファイルを作成するような場合に使用) |
-e | --encrypt | 暗号化する |
-o | --latest-time | ZIPファイルのタイムスタンプを、対象ファイルの最新ファイルと同じにする |
-F | --fix | ZIPファイルを修復する(「-FF」でさらに細かく修復を試みる) |
-FF | --fixfix | ZIPファイルを修復する(「-F」では修復できなかったファイルも修復できる可能性がある) |
-J | --junk-sfx | 圧縮ファイルの拡張子(.zip)を付けない |
-z | --archive-comment | ZIPファイルにコメントを追加する(コメントは圧縮後に入力) |
短いオプション | 長いオプション | 意味 |
---|---|---|
-b パス | --temp-path=パス | 作業ディレクトリを指定する |
-q | --quiet | 動作中のメッセージを表示しない |
-v | --verbose | 動作中のメッセージを詳しくする(ファイルを指定しなかった場合は、zipコマンドのバージョンを表示) |
-db | --display-bytes | 動作中のメッセージに処理したサイズを表示する |
-dc | --display-counts | 動作中のメッセージに処理したファイル数を表示する |
-du | --display-usize | 動作中のメッセージに元のファイルサイズを表示する |
-h2 | --more-help | 詳しいヘルプを表示する |
【※】短いオプション、長いオプションともに「-t日付」「-t=日付」「-t 日付」のスタイルで指定可能。
ZIPは、Linux以外のOS、特にWindows OSではポピュラーな圧縮形式です。Windowsは、OS標準機能でZIPファイルを作成することができます。
Linux環境では、伝統的に複数ファイルを1つのファイルにする操作(アーカイブ)と、ファイルを圧縮する操作は別で、前者は「tar」コマンド、後者は「gzip」コマンドや「bzip2」コマンドを使用します(※)。
【※】現在のtarコマンドはgzip/bzip2による圧縮に対応しているため、コマンド操作としてはアーカイブと同時に圧縮するのが一般的です。
ZIPファイルの場合は、「複数のファイルを1つにまとめて圧縮する」という操作を行います。なお、ZIPファイルの展開には、「unzip」コマンドを使います(次回解説)。
「zip ZIPファイル名 対象ファイル」で、ZIPファイルを作成します(画面1)。拡張子の「.zip」は自動的に追加されるので省略できます。
zip 0720text *.txt
(「*.txt」を「0720text.zip」に圧縮する)
サブディレクトリも含めて圧縮したい場合は、「-r」オプションを指定します。例えば、カレントディレクトリのファイルをサブディレクトリ下のファイルも含めて圧縮したい場合は、「zip -r ZIPファイル名 *」のように指定します(画面2)。
zip -r all *
(カレントディレクトリのファイルをサブディレクトリ下のファイルも含めて「all.zip」に圧縮する)
「カレントディレクトリのファイルを全て圧縮したい。ただし、ZIPファイルは除外したい」というように、圧縮から除外したいファイルがある場合は「-x」オプションを指定します。
除外ファイルを指定する「-x」オプションは、除外対象ファイルの後に指定します。今回の場合はZIPファイルを除外したいので、「zip -r ZIPファイル名 * -x "*.zip"」のように指定します(画面3)。ここでは、「""」の指定を忘れないようにしましょう(※)。
カレントディレクトリに「*.zip」がない場合は問題ありませんが、例えば「data.zip」が存在した場合は、シェルがワイルドカードを展開して「zip -r ZIPファイル名 * -x data.zip」が実行されることになります。
カレントディレクトリの「*.zip」を除外したいだけならば問題ありませんが、サブディレクトリ下に別名の「*.zip」があった場合は除外されない、ということになるので注意してください。
zip -r data0720 * -x "*.zip"
(カレントディレクトリのファイルを、サブディレクトリ下のファイルも含めて「data0720.zip」に圧縮する。ただし「*.zip」は除く)
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.