本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「zip」コマンドの応用編です。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「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ファイルは作成/更新されない) |
| 短いオプション | 長いオプション | 意味 |
|---|---|---|
| -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ファイルを作成した後に元のファイルを削除したい場合は、「-m」オプションを使います。「zip -m ZIPファイル名 対象ファイル」のように指定します(画面1)。ZIPファイルの中にファイルを移動するイメージになります。
zip -m text0730 *.txt
(「*.txt」を「text0730.zip」に圧縮して削除する、拡張子「.zip」は自動で追加されるので省略可能)
例えば、「ln」コマンドや「cp」コマンドで「-b」オプションを使うと、既存のファイルをコピーしたり、ファイルにリンクを作成したりした際にバックアップファイルが作成されます。バックアップファイルは、元のファイル名の末尾に「~」(チルダ記号)が付いたものになるので、これらのファイルをZIPファイルにまとめて、元のファイルは削除してみましょう。
この場合、サブディレクトリも含める「-r」オプションと、ZIPファイルに圧縮して元のファイルを削除する「-m」オプションを組み合わせます。
対象のファイルはいったん「*」で全てのファイルを指定し、「-i "*~"」でファイル名の末尾が「~」のファイルに限定します。
具体的には、「zip -mr backup0730 * -i "*~"」のように指定します(画面2)。これで、カレントディレクトリ下の全てのファイルのうち、ファイル名の末尾が「~」のファイルだけが圧縮されて、元のファイルが削除されます。
zip -mr backup0730 * -i "*~"
(カレントディレクトリ下のバックアップファイル(ファイル名の末尾が「~」のファイル)を「backup0730.zip」に圧縮して元のファイルを削除する)
上記の実行画面では、確認のためにzipコマンド実行の前後で「find . -name "*~"」実行しています。これは、カレントディレクトリ下にある「"*~"」という名前のファイルを探す、という意味です。
なお、zipコマンドを実行した同じディレクトリで「unzip backup0730.zip」を実行すれば、「backup0730.zip」に移動したファイルを全て元の場所に戻すことができます。
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.