
Zipアーカイブからファイルを除外する方法
多数の特定のファイル、または一致するファイルのグループを Zip アーカイブから除外する最も簡単な方法は、Mac OS X の使いやすい UI に組み込まれている簡単な Zip 圧縮ユーティリティを使わずに、強力な zip コマンドがあるコマンドラインを使うことです。
これはさまざまな理由で便利ですが、この記事の主な目的は、Mac で作成された Zip アーカイブにバンドルされる .DS_Store ファイルに関することです。これらのファイルは、別の Mac、Windows PC、Linux などでそのファイルを解凍するときに混乱を招きます。これは使いやすい Zip ツールでもコマンドラインの Zip ユーティリティでもデフォルトで発生します。これは、Zip ツールのデフォルトの動作が、表示されているかどうかに関係なく隠しファイルも含めることになっているためです。これは必ずしも悪いことではなく、多くの場合は便利だと考えられますが、これらのファイルやその他のファイルをアーカイブに表示したくない場合は、このまま読み進めてください。
Zipアーカイブからファイルを除外する方法
zipアーカイブ作成時のファイル除外の基本は、-xフラグです。これは、特定の名前またはパターンに一致するファイルをアーカイブから除外するために使用されます。最も基本的な方法は、次のようになります。
zip archive.zip files -x "ExcludeMe"
つまり、「Nothanks.jpg」という名前のファイルを1つ除外することができます。
zip archive.zip images/ -x "Nothanks.jpg"
これが役立つ具体的な例をいくつか見てみましょう。
Zipアーカイブから.DS_Storeファイルを除外する
これにより、通常は表示されない Mac メタデータ .DS_Store ファイルが、デフォルトでバンドルされている zip アーカイブに含まれることがなくなります。
zip -r archivename.zip archivedirectory -x "*.DS_Store"
ただし、ディレクトリにサブディレクトリが含まれている場合は、そのコマンドの別のバリエーションを使用して、サブディレクトリからも ds_store ファイルを除外する必要があります。
zip -r archive.zip directory -x "*/\.DS_Store"
注意: このコマンドが正しく機能するためにすべてのシェルで引用符が必要なわけではありませんが、bash シェル (Mac OS X のデフォルト) では、ワイルドカードやパターンを除外するために引用符を使用する必要があります。
特定のファイルタイプを Zip アーカイブから除外する
ワイルドカードを使用すると、拡張子に着目することで、特定の種類のファイルをすべて除外することもできます。例えば、次のコマンドはディレクトリ全体を圧縮しますが、.jpgファイルは除外されます。
zip -r archive.zip directory -x "*.jpg"
これは、特定のファイル拡張子またはファイル名に一致するパターンに合わせて変更できます。
Zipアーカイブから.gitまたは.svnディレクトリを除外する
.git とその内容を除いたディレクトリを zip 圧縮します。
zip -r zipdir.zip directorytozip -x "*.git*"
.svn ディレクトリを含めずにフォルダーを zip 圧縮します。
zip -r zipped.zip directory -x "*.svn*"
Zipアーカイブからすべての隠しファイルを除外する
パターンとワイルドカードを使用できるため、.svn のようなディレクトリでも、.bash_profile や .htaccess のような個別のファイルでも、先頭にピリオドが付いていることで非表示になっているファイルやフォルダーの一部またはすべてを除外することもできます。
zip -r archivename.zip directorytozip -x "*.*"
または、すべてのサブディレクトリからすべての非表示ファイルを除外するには:
zip -r archive.zip directory -x "*/\.*"
サブディレクトリからこれらのファイルを除外するための正確な構文を教えてくれた Macworld フォーラムのコメント投稿者に感謝します。
結局のところ、これはパワーユーザーがアーカイブ作成にターミナルを使う理由の一つに過ぎません。ワイルドカードのサポート、除外設定、ZIPファイルのパスワード保護(オプション)といった強力な機能を備え、より充実した機能を提供します。Macにすべて搭載されているため、高度な機能を使うために別のアプリをダウンロードする必要はありません。
はい、技術的には、どうしてもUIを使いたいというのであれば、Mac OS XでFinderやSpotlightの検索演算子を使ってフォルダの内容を絞り込み、アーカイブを作成することも可能です。あるいは、「すべて選択」して、各ファイルを手動でCommand+クリックでクリックし、アーカイブに含めないようにすることも可能です。しかし、大規模なアーカイブ操作には効率的ではありません。そのため、使いやすさの点ではターミナルの方が優れています。コマンドライン中心ではありますが、基本を習得すればそれほど複雑ではありません。