たとえばディレクトリ/foo/bar
の直下にa.xml
/b.xml
/c.xml
という3つのxmlファイルがあり、この3つだけをおさめたzipファイルを作りたいとします。つまり「zipファイルを解凍すると、解凍ディレクトリの直下に3つのxmlファイルが格納されている」という状態にしたいわけです。
さてこのとき思わず次のようなzipコマンドを打ち込みたくなります。
zip /foo/bar/hoge.zip /foo/bar/*.xml
この結果によってディレクトリ/foo/bar
直下に生成されたhoge.zip
を解凍してみると、ディレクトリ構造が温存されていることがわかります。つまりhoge.zip
を解凍すると、まずfoo
というディレクトリがあり、その直下にbar
があって、そこをさらに潜って初めてa.xml
/b.xml
/c.xml
が現れます。言い方を変えるとzipファイルには/foo/bar/a.xml
, /foo/bar/b.xml
, /foo/bar/c.xml
が圧縮されたような形になっています。
これを回避する、つまりディレクトリ構造を無視してファイルだけをzipとして圧縮したい場合は-j
オプションを使います。
zip -j /foo/bar/hoge.zip /foo/bar/*.xml
こうするとhoge.zip
を解凍したディレクトリの直下にa.xml
/b.xml
/c.xml
の3つが格納されています。