解凍した時にディレクトリができないように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
(略)