広告

Linuxコマンドでzip圧縮をする:zip -r hoge.zip hoge/

タグ:linux

アーカイブ名(生成されるzipファイル名)が先である。
何度調べても忘れるので自分用メモ

ポイント:
  • オプション -r: ディレクトりを再帰的にたどってファイルをアーカイブに追加 (だいたいそうするのでいつもつけることにしている)
  • オプション -j: ディレクトリ構造を平坦化、つまりファイルだけを拾って アーカイブ直下に追加(≒ディレクトリをアーカイブ内に作らない)


例えば
$ tree dir
dir
├── a
└── b
  
なるディレクトリがあったとして
$ zip -r hoge.zip hoge
adding: dir/a (stored 0%)
adding: dir/b (stored 0%)
  
のようにアーカイブ内ディレクトリができるが、
$ zip -jr hoge.zip hoge/*
adding: a (stored 0%)
adding: b (stored 0%)
  
とするとアーカイブ内ディレクトリをつくらずファイルのみのzipをつくれる。
また
$ zip -r hoge.zip hoge/*
adding: dir/a (stored 0%)
adding: dir/b (stored 0%)
  
でもよさそうな雰囲気もあるが、これは最初のものと同様にアーカイブ内ディレクトリを 作ってしまう。 これはzipがカレントディレクトリからの相対パスを参照するためである。
どうしてもこのやり方でやりたければ
$ cd dir
$ zip -r ../hoge.zip ./*
adding: a (stored 0%)
adding: b (stored 0%)
のようにする。