解凍した時にディレクトリができないようにzipで圧縮する方法を知らなかったのでメモ。
何を行っているかというと、次のように圧縮したい対象ディレクトリdirectoryがあったとする。
$ tree directory
directory
├── file1.txt
└── file2.txt
0 directories, 2 files
これをzip -r directory.zip directoryで圧縮すると解凍した時にdirectoryが出てくる。
そうではなくて、解凍した時に中身のファイルをそのまま出力して欲しい場合は、次のようにjオプションをつければ良い。
$ zip -rj directory.zip directory
adding: file2.txt (stored 0%)
adding: file1.txt (stored 0%)
$ ls
directory directory.zip
追記(2017/2/17)
ただし、-jは深い階層の場合、ファイルのみがフラットにzipされるみたい。(ご指摘ありがとうございました。)
この場合一番上のディレクトリのみ除外したい場合は、以下のようにするしかないかもしれない。
cd directory
zip -r directory.zip *
この記事はディレクトリの外からzipすると一番上のディレクトリも一緒にzipされちゃうから気をつけようねという戒めぐらいに思ってもらいたい。
補足
-jオプションはjunkから来ていて、ディレクトリ名を捨てる(junk)するということみたい。
$ zip -h
(略)
-j junk (don't record) directory names
(略)